redesign request key into dialog
This commit is contained in:
parent
074be9e798
commit
e06205ae55
|
@ -873,6 +873,7 @@
|
|||
<activity
|
||||
android:name=".remote.ui.RequestKeyPermissionActivity"
|
||||
android:exported="false"
|
||||
android:theme="@style/Theme.Keychain.Transparent"
|
||||
android:label="@string/app_name" />
|
||||
<activity
|
||||
android:name=".remote.ui.AppSettingsActivity"
|
||||
|
|
|
@ -18,138 +18,192 @@
|
|||
package org.sufficientlysecure.keychain.remote.ui;
|
||||
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.app.Dialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v4.app.FragmentActivity;
|
||||
import android.view.ContextThemeWrapper;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.ViewAnimator;
|
||||
|
||||
import org.openintents.openpgp.util.OpenPgpUtils.UserId;
|
||||
import org.sufficientlysecure.keychain.R;
|
||||
import org.sufficientlysecure.keychain.remote.ui.RequestKeyPermissionPresenter.RequestKeyPermissionMvpView;
|
||||
import org.sufficientlysecure.keychain.ui.base.BaseActivity;
|
||||
import org.sufficientlysecure.keychain.ui.dialog.CustomAlertDialogBuilder;
|
||||
import org.sufficientlysecure.keychain.ui.util.ThemeChanger;
|
||||
|
||||
|
||||
public class RequestKeyPermissionActivity extends BaseActivity {
|
||||
public class RequestKeyPermissionActivity extends FragmentActivity {
|
||||
public static final String EXTRA_PACKAGE_NAME = "package_name";
|
||||
public static final String EXTRA_REQUESTED_KEY_IDS = "requested_key_ids";
|
||||
|
||||
|
||||
private RequestKeyPermissionPresenter presenter;
|
||||
|
||||
private View keyInfoLayout;
|
||||
private ViewAnimator viewAnimator;
|
||||
private TextView titleText;
|
||||
private ImageView iconClientApp;
|
||||
private TextView keyUserIdView;
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setFullScreenDialogClose(
|
||||
new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
presenter.onClickCancelDialog();
|
||||
}
|
||||
});
|
||||
presenter = RequestKeyPermissionPresenter.createRequestKeyPermissionPresenter(getBaseContext());
|
||||
|
||||
if (savedInstanceState == null) {
|
||||
RequestKeyPermissionFragment frag = new RequestKeyPermissionFragment();
|
||||
frag.show(getSupportFragmentManager(), "requestKeyDialog");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStart() {
|
||||
super.onStart();
|
||||
|
||||
Intent intent = getIntent();
|
||||
String packageName = intent.getStringExtra(EXTRA_PACKAGE_NAME);
|
||||
long[] keyIds = intent.getLongArrayExtra(EXTRA_REQUESTED_KEY_IDS);
|
||||
|
||||
presenter = RequestKeyPermissionPresenter.createRequestKeyPermissionPresenter(getBaseContext(), view);
|
||||
presenter.setupFromIntentData(packageName, keyIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initLayout() {
|
||||
setContentView(R.layout.api_remote_request_key_permission);
|
||||
public static class RequestKeyPermissionFragment extends DialogFragment {
|
||||
private RequestKeyPermissionMvpView mvpView;
|
||||
private RequestKeyPermissionPresenter presenter;
|
||||
private Button buttonCancel;
|
||||
private Button buttonAllow;
|
||||
|
||||
keyUserIdView = (TextView) findViewById(R.id.select_key_item_name);
|
||||
iconClientApp = (ImageView) findViewById(R.id.icon_client_app);
|
||||
titleText = (TextView) findViewById(R.id.select_identity_key_title);
|
||||
viewAnimator = (ViewAnimator) findViewById(R.id.status_animator);
|
||||
keyInfoLayout = findViewById(R.id.key_info_layout);
|
||||
@NonNull
|
||||
@Override
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
final Activity activity = getActivity();
|
||||
|
||||
findViewById(R.id.button_allow).setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
presenter.onClickAllow();
|
||||
ContextThemeWrapper theme = ThemeChanger.getDialogThemeWrapper(activity);
|
||||
CustomAlertDialogBuilder alert = new CustomAlertDialogBuilder(theme);
|
||||
|
||||
@SuppressLint("InflateParams")
|
||||
View view = LayoutInflater.from(theme).inflate(R.layout.api_remote_request_key_permission, null, false);
|
||||
alert.setView(view);
|
||||
|
||||
buttonAllow = (Button) view.findViewById(R.id.button_allow);
|
||||
buttonCancel = (Button) view.findViewById(R.id.button_cancel);
|
||||
|
||||
setupListenersForPresenter();
|
||||
mvpView = createMvpView(view);
|
||||
|
||||
return alert.create();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
|
||||
presenter = ((RequestKeyPermissionActivity) getActivity()).presenter;
|
||||
presenter.setView(mvpView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancel(DialogInterface dialog) {
|
||||
super.onCancel(dialog);
|
||||
|
||||
if (presenter != null) {
|
||||
presenter.onCancel();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
findViewById(R.id.button_deny).setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
presenter.onClickDeny();
|
||||
}
|
||||
});
|
||||
@Override
|
||||
public void onDismiss(DialogInterface dialog) {
|
||||
super.onDismiss(dialog);
|
||||
|
||||
findViewById(R.id.display_key).setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
presenter.onClickDisplayKey();
|
||||
if (presenter != null) {
|
||||
presenter.setView(null);
|
||||
presenter = null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@NonNull
|
||||
private RequestKeyPermissionMvpView createMvpView(View view) {
|
||||
final TextView titleText = (TextView) view.findViewById(R.id.select_identity_key_title);
|
||||
final TextView keyUserIdView = (TextView) view.findViewById(R.id.select_key_item_name);
|
||||
final ImageView iconClientApp = (ImageView) view.findViewById(R.id.icon_client_app);
|
||||
final View keyUnavailableWarning = view.findViewById(R.id.requested_key_unavailable_warning);
|
||||
final View keyInfoLayout = view.findViewById(R.id.key_info_layout);
|
||||
|
||||
return new RequestKeyPermissionMvpView() {
|
||||
@Override
|
||||
public void switchToLayoutRequestKeyChoice() {
|
||||
keyInfoLayout.setVisibility(View.VISIBLE);
|
||||
keyUnavailableWarning.setVisibility(View.GONE);
|
||||
buttonAllow.setEnabled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void switchToLayoutNoSecret() {
|
||||
keyInfoLayout.setVisibility(View.VISIBLE);
|
||||
keyUnavailableWarning.setVisibility(View.VISIBLE);
|
||||
buttonAllow.setEnabled(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void displayKeyInfo(UserId userId) {
|
||||
keyUserIdView.setText(userId.name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finish() {
|
||||
FragmentActivity activity = getActivity();
|
||||
if (activity == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
activity.setResult(Activity.RESULT_OK);
|
||||
activity.finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finishAsCancelled() {
|
||||
FragmentActivity activity = getActivity();
|
||||
if (activity == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
activity.setResult(Activity.RESULT_CANCELED);
|
||||
activity.finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTitleText(String text) {
|
||||
titleText.setText(text);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTitleClientIcon(Drawable drawable) {
|
||||
iconClientApp.setImageDrawable(drawable);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private void setupListenersForPresenter() {
|
||||
buttonAllow.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
presenter.onClickAllow();
|
||||
}
|
||||
});
|
||||
|
||||
buttonCancel.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
presenter.onClickCancel();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
RequestKeyPermissionMvpView view = new RequestKeyPermissionMvpView() {
|
||||
@Override
|
||||
public void switchToLayoutRequestKeyChoice() {
|
||||
keyInfoLayout.setVisibility(View.VISIBLE);
|
||||
viewAnimator.setDisplayedChild(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void switchToLayoutNoSecret() {
|
||||
keyInfoLayout.setVisibility(View.VISIBLE);
|
||||
viewAnimator.setDisplayedChild(1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void switchToLayoutUnknownKey() {
|
||||
keyInfoLayout.setVisibility(View.GONE);
|
||||
viewAnimator.setDisplayedChild(2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void displayKeyInfo(UserId userId) {
|
||||
keyUserIdView.setText(userId.name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finish() {
|
||||
setResult(Activity.RESULT_OK);
|
||||
RequestKeyPermissionActivity.this.finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finishAsCancelled() {
|
||||
setResult(Activity.RESULT_CANCELED);
|
||||
RequestKeyPermissionActivity.this.finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startActivity(Intent intent) {
|
||||
RequestKeyPermissionActivity.this.startActivity(intent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTitleText(String text) {
|
||||
titleText.setText(text);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTitleClientIcon(Drawable drawable) {
|
||||
iconClientApp.setImageDrawable(drawable);
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -2,63 +2,62 @@ package org.sufficientlysecure.keychain.remote.ui;
|
|||
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.PackageManager.NameNotFoundException;
|
||||
import android.graphics.drawable.Drawable;
|
||||
|
||||
import com.android.annotations.VisibleForTesting;
|
||||
import org.openintents.openpgp.util.OpenPgpUtils.UserId;
|
||||
import org.sufficientlysecure.keychain.Constants;
|
||||
import org.sufficientlysecure.keychain.R;
|
||||
import org.sufficientlysecure.keychain.pgp.exception.PgpKeyNotFoundException;
|
||||
import org.sufficientlysecure.keychain.provider.ApiDataAccessObject;
|
||||
import org.sufficientlysecure.keychain.provider.CachedPublicKeyRing;
|
||||
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
|
||||
import org.sufficientlysecure.keychain.provider.ProviderHelper;
|
||||
import org.sufficientlysecure.keychain.remote.ApiPermissionHelper;
|
||||
import org.sufficientlysecure.keychain.remote.ApiPermissionHelper.WrongPackageCertificateException;
|
||||
import org.sufficientlysecure.keychain.ui.ViewKeyActivity;
|
||||
import org.sufficientlysecure.keychain.util.Log;
|
||||
|
||||
|
||||
class RequestKeyPermissionPresenter {
|
||||
private final Context context;
|
||||
private final RequestKeyPermissionMvpView view;
|
||||
private final PackageManager packageManager;
|
||||
private final ApiDataAccessObject apiDataAccessObject;
|
||||
private final ApiPermissionHelper apiPermissionHelper;
|
||||
|
||||
private RequestKeyPermissionMvpView view;
|
||||
|
||||
private String packageName;
|
||||
private long masterKeyId;
|
||||
|
||||
|
||||
static RequestKeyPermissionPresenter createRequestKeyPermissionPresenter(Context context,
|
||||
RequestKeyPermissionMvpView view) {
|
||||
static RequestKeyPermissionPresenter createRequestKeyPermissionPresenter(Context context) {
|
||||
PackageManager packageManager = context.getPackageManager();
|
||||
ApiDataAccessObject apiDataAccessObject = new ApiDataAccessObject(context);
|
||||
ApiPermissionHelper apiPermissionHelper = new ApiPermissionHelper(context, apiDataAccessObject);
|
||||
|
||||
return new RequestKeyPermissionPresenter(
|
||||
context, view, apiDataAccessObject, apiPermissionHelper, packageManager);
|
||||
return new RequestKeyPermissionPresenter(context, apiDataAccessObject, apiPermissionHelper, packageManager);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
RequestKeyPermissionPresenter(Context context, RequestKeyPermissionMvpView view,
|
||||
ApiDataAccessObject apiDataAccessObject, ApiPermissionHelper apiPermissionHelper,
|
||||
PackageManager packageManager) {
|
||||
private RequestKeyPermissionPresenter(Context context, ApiDataAccessObject apiDataAccessObject,
|
||||
ApiPermissionHelper apiPermissionHelper, PackageManager packageManager) {
|
||||
this.context = context;
|
||||
this.view = view;
|
||||
this.apiDataAccessObject = apiDataAccessObject;
|
||||
this.apiPermissionHelper = apiPermissionHelper;
|
||||
this.packageManager = packageManager;
|
||||
}
|
||||
|
||||
void setView(RequestKeyPermissionMvpView view) {
|
||||
this.view = view;
|
||||
}
|
||||
|
||||
void setupFromIntentData(String packageName, long[] requestedMasterKeyIds) {
|
||||
checkPackageAllowed(packageName);
|
||||
|
||||
if (requestedMasterKeyIds.length < 1) {
|
||||
view.finishAsCancelled();
|
||||
}
|
||||
|
||||
try {
|
||||
setPackageInfo(packageName);
|
||||
} catch (NameNotFoundException e) {
|
||||
|
@ -69,7 +68,6 @@ class RequestKeyPermissionPresenter {
|
|||
|
||||
this.packageName = packageName;
|
||||
this.masterKeyId = requestedMasterKeyIds[0];
|
||||
// long masterKeyId = 4817915339785265755L;
|
||||
try {
|
||||
CachedPublicKeyRing cachedPublicKeyRing = new ProviderHelper(context).getCachedPublicKeyRing(masterKeyId);
|
||||
|
||||
|
@ -82,21 +80,17 @@ class RequestKeyPermissionPresenter {
|
|||
view.switchToLayoutNoSecret();
|
||||
}
|
||||
} catch (PgpKeyNotFoundException e) {
|
||||
view.switchToLayoutUnknownKey();
|
||||
|
||||
view.finishAsCancelled();
|
||||
}
|
||||
}
|
||||
|
||||
private void setPackageInfo(String packageName) throws NameNotFoundException {
|
||||
Drawable appIcon;
|
||||
CharSequence appName;
|
||||
|
||||
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(packageName, 0);
|
||||
appIcon = packageManager.getApplicationIcon(applicationInfo);
|
||||
appName = packageManager.getApplicationLabel(applicationInfo);
|
||||
Drawable appIcon = packageManager.getApplicationIcon(applicationInfo);
|
||||
CharSequence appName = packageManager.getApplicationLabel(applicationInfo);
|
||||
|
||||
view.setTitleClientIcon(appIcon);
|
||||
view.setTitleText(context.getString(R.string.request_permission_title, appName));
|
||||
view.setTitleText(context.getString(R.string.request_permission_msg, appName));
|
||||
}
|
||||
|
||||
private void checkPackageAllowed(String packageName) {
|
||||
|
@ -116,23 +110,16 @@ class RequestKeyPermissionPresenter {
|
|||
view.finish();
|
||||
}
|
||||
|
||||
void onClickDeny() {
|
||||
void onClickCancel() {
|
||||
view.finishAsCancelled();
|
||||
}
|
||||
|
||||
void onClickDisplayKey() {
|
||||
Intent intent = new Intent(context, ViewKeyActivity.class);
|
||||
intent.setData(KeyRings.buildGenericKeyRingUri(masterKeyId));
|
||||
view.startActivity(intent);
|
||||
}
|
||||
|
||||
void onClickCancelDialog() {
|
||||
void onCancel() {
|
||||
view.finishAsCancelled();
|
||||
}
|
||||
|
||||
interface RequestKeyPermissionMvpView {
|
||||
void switchToLayoutRequestKeyChoice();
|
||||
void switchToLayoutUnknownKey();
|
||||
void switchToLayoutNoSecret();
|
||||
|
||||
void setTitleText(String text);
|
||||
|
@ -142,6 +129,5 @@ class RequestKeyPermissionPresenter {
|
|||
|
||||
void finish();
|
||||
void finishAsCancelled();
|
||||
void startActivity(Intent intent);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -293,7 +293,7 @@ public class BackupCodeFragment extends CryptoOperationFragment<BackupKeyringPar
|
|||
setupEditTextFocusNext(mCodeEditText);
|
||||
setupEditTextSuccessListener(mCodeEditText);
|
||||
|
||||
mStatusAnimator = (ToolableViewAnimator) view.findViewById(R.id.status_animator);
|
||||
mStatusAnimator = (ToolableViewAnimator) view.findViewById(R.id.button_bar_animator);
|
||||
mTitleAnimator = (ToolableViewAnimator) view.findViewById(R.id.title_animator);
|
||||
mCodeFieldsAnimator = (ToolableViewAnimator) view.findViewById(R.id.code_animator);
|
||||
|
||||
|
|
|
@ -354,7 +354,7 @@
|
|||
</org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator>
|
||||
|
||||
<org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator
|
||||
android:id="@+id/status_animator"
|
||||
android:id="@+id/button_bar_animator"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
|
|
|
@ -354,7 +354,7 @@
|
|||
</org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator>
|
||||
|
||||
<org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator
|
||||
android:id="@+id/status_animator"
|
||||
android:id="@+id/button_bar_animator"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
|
|
|
@ -1,23 +1,21 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:custom="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
tools:layout_marginTop="24dp"
|
||||
>
|
||||
|
||||
<include
|
||||
android:id="@+id/toolbar_include"
|
||||
layout="@layout/toolbar_standalone" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:padding="16dp"
|
||||
android:id="@+id/iconLayout">
|
||||
android:id="@+id/iconLayout"
|
||||
android:elevation="4dp"
|
||||
android:background="?attr/colorPrimary"
|
||||
android:gravity="center_horizontal"
|
||||
tools:targetApi="lollipop">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -43,150 +41,111 @@
|
|||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/select_identity_key_title"
|
||||
android:layout_width="wrap_content"
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:padding="12dp"
|
||||
android:gravity="center_vertical"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
tools:text="@string/request_permission_title"
|
||||
/>
|
||||
android:orientation="vertical"
|
||||
android:paddingLeft="24dp"
|
||||
android:paddingRight="24dp"
|
||||
android:paddingTop="24dp"
|
||||
android:paddingBottom="16dp"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="?android:textAppearanceLarge"
|
||||
android:text="@string/request_permission_title"
|
||||
android:id="@+id/dialog_title"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/select_identity_key_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:gravity="center_vertical"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
tools:text="@string/request_permission_msg"
|
||||
/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:orientation="horizontal"
|
||||
android:background="?selectableItemBackground"
|
||||
android:id="@+id/key_info_layout"
|
||||
>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:padding="8dp"
|
||||
android:paddingRight="8dp"
|
||||
android:src="@drawable/ic_vpn_key_grey_24dp"
|
||||
/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/requested_key_label"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/select_key_item_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
tools:text="Alice Skywalker"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium" />
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:text="@string/requested_key_unavailable_warning"
|
||||
android:textAppearance="?android:textAppearanceMedium"
|
||||
android:textColor="@color/android_red_dark"
|
||||
android:id="@+id/requested_key_unavailable_warning"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:layout_marginBottom="32dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:minHeight="?listPreferredItemHeight"
|
||||
android:orientation="horizontal"
|
||||
android:id="@+id/key_info_layout">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dip"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical"
|
||||
android:layout_gravity="center_vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Requested key:"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/select_key_item_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
tools:text="Alice Skywalker"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium" />
|
||||
|
||||
</LinearLayout>
|
||||
android:gravity="end"
|
||||
android:padding="8dp"
|
||||
style="?buttonBarStyle">
|
||||
|
||||
<Button
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:id="@+id/display_key"
|
||||
android:text="Display"
|
||||
style="@style/BorderlessButton" />
|
||||
android:text="@string/button_cancel"
|
||||
android:id="@+id/button_cancel"
|
||||
style="?buttonBarButtonStyle"
|
||||
/>
|
||||
|
||||
<Button
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/button_allow"
|
||||
android:id="@+id/button_allow"
|
||||
tools:enabled="false"
|
||||
style="?buttonBarButtonStyle" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/status_animator"
|
||||
custom:initialView="0">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="?android:attr/listDivider" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?android:attr/listPreferredItemHeight"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:text="Allow access to this key"
|
||||
android:background="?android:selectableItemBackground"
|
||||
android:drawableLeft="@drawable/ic_vpn_key_grey_24dp"
|
||||
android:drawablePadding="16dp"
|
||||
android:gravity="center_vertical"
|
||||
android:clickable="true"
|
||||
android:id="@+id/button_allow" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="?android:attr/listDivider" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?android:attr/listPreferredItemHeight"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:text="Deny access"
|
||||
android:background="?android:selectableItemBackground"
|
||||
android:drawableLeft="@drawable/ic_close_grey_24dp"
|
||||
android:drawablePadding="16dp"
|
||||
android:gravity="center_vertical"
|
||||
android:clickable="true"
|
||||
android:id="@+id/button_deny" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="?android:attr/listDivider" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="?android:attr/listPreferredItemHeight"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:gravity="center_vertical"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:text="Key but no secret!"
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="?android:attr/listPreferredItemHeight"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:gravity="center_vertical"
|
||||
android:id="@+id/key_creation_done"
|
||||
android:text="Unknown key! (Import?)"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
</org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator>
|
||||
|
||||
</LinearLayout>
|
|
@ -384,7 +384,7 @@
|
|||
</org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator>
|
||||
|
||||
<org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator
|
||||
android:id="@+id/status_animator"
|
||||
android:id="@+id/button_bar_animator"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
|
|
|
@ -1798,5 +1798,10 @@
|
|||
<string name="redirect_import_key_no">"Close"</string>
|
||||
<string name="title_activity_redirect_key">"Key import redirection"</string>
|
||||
|
||||
<string name="request_permission_title">%s wants to decrypt a message.</string>
|
||||
<string name="request_permission_title">Allow access to your key?</string>
|
||||
<string name="request_permission_msg">%1$s requests access to one of your keys, which allows it to decrypt messages sent to this key. You can revoke access later in OpenKeychain.</string>
|
||||
<string name="requested_key_unavailable_warning">This key is not available. To use it, you must import it as one of your own!</string>
|
||||
<string name="button_allow">Allow</string>
|
||||
<string name="button_cancel">Cancel</string>
|
||||
<string name="requested_key_label">Requested key:</string>
|
||||
</resources>
|
||||
|
|
Loading…
Reference in a new issue