Make create key wizard step-by-step

This commit is contained in:
Dominik Schürmann 2015-03-09 22:00:44 +01:00 committed by Adithya Abraham Philip
parent 012b7e4830
commit 7d2e2e3eec
41 changed files with 535 additions and 151 deletions

View File

@ -37,6 +37,9 @@ python copy OpenKeychain social grey person 24
python copy OpenKeychain social grey person_add 24
python copy OpenKeychain social grey share 24
python copy OpenKeychain communication grey vpn_key 24
python copy OpenKeychain navigation grey chevron_left 24
python copy OpenKeychain navigation grey chevron_right 24
python copy OpenKeychain social grey person 48
# navigation drawer sections
python copy OpenKeychain communication black vpn_key 24

View File

@ -93,7 +93,7 @@
<activity
android:name=".ui.CreateKeyActivity"
android:configChanges="orientation|screenSize|keyboardHidden|keyboard"
android:windowSoftInputMode="stateHidden|adjustResize"
android:windowSoftInputMode="adjustResize"
android:label="@string/title_create_key"
android:parentActivityName=".ui.MainActivity">
<meta-data

View File

@ -39,8 +39,8 @@ public class CreateKeyActivity extends BaseActivity {
super.onCreate(savedInstanceState);
// pass extras into fragment
CreateKeyInputFragment frag =
CreateKeyInputFragment.newInstance(
CreateKeyNameFragment frag =
CreateKeyNameFragment.newInstance(
getIntent().getStringExtra(EXTRA_NAME),
getIntent().getStringExtra(EXTRA_EMAIL)
);

View File

@ -0,0 +1,134 @@
/*
* Copyright (C) 2014 Dominik Schürmann <dominik@dominikschuermann.de>
*
* 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 <http://www.gnu.org/licenses/>.
*/
package org.sufficientlysecure.keychain.ui;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.ui.CreateKeyActivity.FragAction;
import org.sufficientlysecure.keychain.ui.widget.EmailEditText;
public class CreateKeyEmailFragment extends Fragment {
public static final String ARG_NAME = "name";
public static final String ARG_EMAIL = "email";
CreateKeyActivity mCreateKeyActivity;
EmailEditText mEmailEdit;
View mBackButton;
View mNextButton;
String mName;
/**
* Creates new instance of this fragment
*/
public static CreateKeyEmailFragment newInstance(String name, String email) {
CreateKeyEmailFragment frag = new CreateKeyEmailFragment();
Bundle args = new Bundle();
args.putString(ARG_NAME, name);
args.putString(ARG_EMAIL, email);
frag.setArguments(args);
return frag;
}
/**
* Checks if text of given EditText is not empty. If it is empty an error is
* set and the EditText gets the focus.
*
* @param context
* @param editText
* @return true if EditText is not empty
*/
private static boolean isEditTextNotEmpty(Context context, EditText editText) {
boolean output = true;
if (editText.getText().toString().length() == 0) {
editText.setError(context.getString(R.string.create_key_empty));
editText.requestFocus();
output = false;
} else {
editText.setError(null);
}
return output;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.create_key_email_fragment, container, false);
mEmailEdit = (EmailEditText) view.findViewById(R.id.create_key_email);
mBackButton = view.findViewById(R.id.create_key_back_button);
mNextButton = view.findViewById(R.id.create_key_next_button);
// initial values
mName = getArguments().getString(ARG_NAME);
String email = getArguments().getString(ARG_EMAIL);
mEmailEdit.setText(email);
// focus empty edit fields
if (email == null) {
mEmailEdit.requestFocus();
}
mBackButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCreateKeyActivity.loadFragment(null, null, FragAction.TO_LEFT);
}
});
mNextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
createKeyCheck();
}
});
return view;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mCreateKeyActivity = (CreateKeyActivity) getActivity();
}
private void createKeyCheck() {
if (isEditTextNotEmpty(getActivity(), mEmailEdit)) {
CreateKeyPassphraseFragment frag =
CreateKeyPassphraseFragment.newInstance(
mName,
mEmailEdit.getText().toString()
);
mCreateKeyActivity.loadFragment(null, frag, FragAction.TO_RIGHT);
}
}
}

View File

@ -95,7 +95,7 @@ public class CreateKeyFinalFragment extends Fragment {
mEmailEdit = (TextView) view.findViewById(R.id.email);
mUploadCheckbox = (CheckBox) view.findViewById(R.id.create_key_upload);
mBackButton = view.findViewById(R.id.create_key_back_button);
mCreateButton = view.findViewById(R.id.create_key_create_button);
mCreateButton = view.findViewById(R.id.create_key_next_button);
mEditText = (TextView) view.findViewById(R.id.create_key_edit_text);
mEditButton = view.findViewById(R.id.create_key_edit_button);

View File

@ -0,0 +1,140 @@
/*
* Copyright (C) 2014 Dominik Schürmann <dominik@dominikschuermann.de>
*
* 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 <http://www.gnu.org/licenses/>.
*/
package org.sufficientlysecure.keychain.ui;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.ui.CreateKeyActivity.FragAction;
import org.sufficientlysecure.keychain.ui.widget.EmailEditText;
import org.sufficientlysecure.keychain.ui.widget.NameEditText;
public class CreateKeyNameFragment extends Fragment {
public static final String ARG_NAME = "name";
public static final String ARG_EMAIL = "email";
CreateKeyActivity mCreateKeyActivity;
NameEditText mNameEdit;
View mNextButton;
String mEmail;
/**
* Creates new instance of this fragment
*/
public static CreateKeyNameFragment newInstance(String name, String email) {
CreateKeyNameFragment frag = new CreateKeyNameFragment();
Bundle args = new Bundle();
args.putString(ARG_NAME, name);
args.putString(ARG_EMAIL, email);
frag.setArguments(args);
return frag;
}
/**
* Checks if text of given EditText is not empty. If it is empty an error is
* set and the EditText gets the focus.
*
* @param context
* @param editText
* @return true if EditText is not empty
*/
private static boolean isEditTextNotEmpty(Context context, EditText editText) {
boolean output = true;
if (editText.getText().toString().length() == 0) {
editText.setError(context.getString(R.string.create_key_empty));
editText.requestFocus();
output = false;
} else {
editText.setError(null);
}
return output;
}
private static boolean areEditTextsEqual(Context context, EditText editText1, EditText editText2) {
boolean output = true;
if (!editText1.getText().toString().equals(editText2.getText().toString())) {
editText2.setError(context.getString(R.string.create_key_passphrases_not_equal));
editText2.requestFocus();
output = false;
} else {
editText2.setError(null);
}
return output;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.create_key_name_fragment, container, false);
mNameEdit = (NameEditText) view.findViewById(R.id.create_key_name);
mNextButton = view.findViewById(R.id.create_key_next_button);
// initial values
String name = getArguments().getString(ARG_NAME);
mEmail = getArguments().getString(ARG_EMAIL);
mNameEdit.setText(name);
// focus empty edit fields
if (name == null) {
mNameEdit.requestFocus();
}
mNextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
createKeyCheck();
}
});
return view;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mCreateKeyActivity = (CreateKeyActivity) getActivity();
}
private void createKeyCheck() {
if (isEditTextNotEmpty(getActivity(), mNameEdit)) {
CreateKeyEmailFragment frag =
CreateKeyEmailFragment.newInstance(
mNameEdit.getText().toString(),
mEmail
);
mCreateKeyActivity.loadFragment(null, frag, FragAction.TO_RIGHT);
}
}
}

View File

@ -17,6 +17,7 @@
package org.sufficientlysecure.keychain.ui;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
@ -28,26 +29,29 @@ import android.widget.EditText;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.ui.CreateKeyActivity.FragAction;
import org.sufficientlysecure.keychain.ui.widget.EmailEditText;
import org.sufficientlysecure.keychain.ui.widget.NameEditText;
import org.sufficientlysecure.keychain.ui.widget.PassphraseEditText;
public class CreateKeyInputFragment extends Fragment {
public class CreateKeyPassphraseFragment extends Fragment {
public static final String ARG_NAME = "name";
public static final String ARG_EMAIL = "email";
// model
String mName;
String mEmail;
// view
CreateKeyActivity mCreateKeyActivity;
NameEditText mNameEdit;
EmailEditText mEmailEdit;
PassphraseEditText mPassphraseEdit;
EditText mPassphraseEditAgain;
View mCreateButton;
View mBackButton;
View mNextButton;
/**
* Creates new instance of this fragment
*/
public static CreateKeyInputFragment newInstance(String name, String email) {
CreateKeyInputFragment frag = new CreateKeyInputFragment();
public static CreateKeyPassphraseFragment newInstance(String name, String email) {
CreateKeyPassphraseFragment frag = new CreateKeyPassphraseFragment();
Bundle args = new Bundle();
args.putString(ARG_NAME, name);
@ -94,27 +98,24 @@ public class CreateKeyInputFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.create_key_input_fragment, container, false);
View view = inflater.inflate(R.layout.create_key_passphrase_fragment, container, false);
mNameEdit = (NameEditText) view.findViewById(R.id.create_key_name);
mPassphraseEdit = (PassphraseEditText) view.findViewById(R.id.create_key_passphrase);
mEmailEdit = (EmailEditText) view.findViewById(R.id.create_key_email);
mPassphraseEditAgain = (EditText) view.findViewById(R.id.create_key_passphrase_again);
mCreateButton = view.findViewById(R.id.create_key_button);
mBackButton = view.findViewById(R.id.create_key_back_button);
mNextButton = view.findViewById(R.id.create_key_next_button);
// initial values
String name = getArguments().getString(ARG_NAME);
String email = getArguments().getString(ARG_EMAIL);
mNameEdit.setText(name);
mEmailEdit.setText(email);
// focus non-empty edit fields
if (name != null && email != null) {
mPassphraseEdit.requestFocus();
} else if (name != null) {
mEmailEdit.requestFocus();
}
mCreateButton.setOnClickListener(new View.OnClickListener() {
mName = getArguments().getString(ARG_NAME);
mEmail = getArguments().getString(ARG_EMAIL);
mPassphraseEdit.requestFocus();
mBackButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
back();
}
});
mNextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
createKeyCheck();
@ -125,22 +126,24 @@ public class CreateKeyInputFragment extends Fragment {
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
public void onAttach(Activity activity) {
super.onAttach(activity);
mCreateKeyActivity = (CreateKeyActivity) getActivity();
}
private void back() {
hideKeyboard();
mCreateKeyActivity.loadFragment(null, null, FragAction.TO_LEFT);
}
private void createKeyCheck() {
if (isEditTextNotEmpty(getActivity(), mNameEdit)
&& isEditTextNotEmpty(getActivity(), mEmailEdit)
&& isEditTextNotEmpty(getActivity(), mPassphraseEdit)
if (isEditTextNotEmpty(getActivity(), mPassphraseEdit)
&& areEditTextsEqual(getActivity(), mPassphraseEdit, mPassphraseEditAgain)) {
CreateKeyFinalFragment frag =
CreateKeyFinalFragment.newInstance(
mNameEdit.getText().toString(),
mEmailEdit.getText().toString(),
mName,
mEmail,
mPassphraseEdit.getText().toString()
);

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 751 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 382 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 481 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 472 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:layout_above="@+id/create_key_buttons">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginLeft="8dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/create_key_email_text" />
<org.sufficientlysecure.keychain.ui.widget.EmailEditText
android:id="@+id/create_key_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="8dp"
android:imeOptions="actionNext"
android:hint="@string/label_email"
android:ems="10" />
</LinearLayout>
</ScrollView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:background="@color/holo_gray_bright"
android:id="@+id/create_key_buttons">
<TextView
android:id="@+id/create_key_back_button"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/btn_back"
android:textAllCaps="true"
android:minHeight="?android:attr/listPreferredItemHeight"
android:drawableLeft="@drawable/ic_chevron_left_grey_24dp"
android:drawablePadding="8dp"
android:gravity="left|center_vertical"
android:clickable="true"
style="?android:attr/borderlessButtonStyle" />
<TextView
android:id="@+id/create_key_next_button"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/btn_next"
android:textAllCaps="true"
android:minHeight="?android:attr/listPreferredItemHeight"
android:drawableRight="@drawable/ic_chevron_right_grey_24dp"
android:drawablePadding="8dp"
android:gravity="right|center_vertical"
android:clickable="true"
style="?android:attr/borderlessButtonStyle" />
</LinearLayout>
</RelativeLayout>

View File

@ -6,7 +6,7 @@
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/create_key_buttons_divider">
android:layout_above="@+id/create_key_buttons">
<LinearLayout
android:layout_width="match_parent"
@ -144,58 +144,42 @@
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:background="@color/holo_gray_bright"
android:id="@+id/create_key_buttons">
<TextView
android:id="@+id/create_key_back_button"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/btn_back"
android:textAllCaps="true"
android:minHeight="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical"
android:drawableLeft="@drawable/ic_chevron_left_grey_24dp"
android:drawablePadding="8dp"
android:gravity="left|center_vertical"
android:clickable="true"
style="?android:attr/borderlessButtonStyle"
android:layout_gravity="center_vertical" />
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:background="?android:attr/listDivider" />
style="?android:attr/borderlessButtonStyle" />
<TextView
android:id="@+id/create_key_create_button"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:id="@+id/create_key_next_button"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/btn_create_key"
android:textAllCaps="true"
android:minHeight="?android:attr/listPreferredItemHeight"
android:drawableRight="@drawable/ic_key_plus_grey600_24dp"
android:drawablePadding="8dp"
android:gravity="center_vertical"
android:gravity="right|center_vertical"
android:clickable="true"
style="?android:attr/borderlessButtonStyle"
android:layout_gravity="center_vertical" />
style="?android:attr/borderlessButtonStyle" />
</LinearLayout>
<View
android:id="@+id/create_key_buttons_divider"
android:layout_width="match_parent"
android:layout_height="1dip"
android:background="?android:attr/listDivider"
android:layout_alignTop="@+id/create_key_buttons"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>

View File

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:layout_above="@+id/create_key_buttons">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginLeft="8dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/create_key_name_text" />
<org.sufficientlysecure.keychain.ui.widget.NameEditText
android:id="@+id/create_key_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="8dp"
android:imeOptions="actionNext"
android:inputType="textAutoCorrect|textPersonName|textCapWords"
android:hint="@string/create_key_hint_full_name"
android:ems="10" />
</LinearLayout>
</ScrollView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:background="@color/holo_gray_bright"
android:id="@+id/create_key_buttons">
<TextView
android:id="@+id/create_key_back_button"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textAllCaps="true"
android:minHeight="?android:attr/listPreferredItemHeight"
android:drawablePadding="8dp"
android:gravity="left|center_vertical"
android:clickable="false"
style="?android:attr/borderlessButtonStyle" />
<TextView
android:id="@+id/create_key_next_button"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/btn_next"
android:textAllCaps="true"
android:minHeight="?android:attr/listPreferredItemHeight"
android:drawableRight="@drawable/ic_chevron_right_grey_24dp"
android:drawablePadding="8dp"
android:gravity="right|center_vertical"
android:clickable="true"
style="?android:attr/borderlessButtonStyle" />
</LinearLayout>
</RelativeLayout>

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
@ -8,7 +7,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:layout_above="@+id/create_key_button_divider">
android:layout_above="@+id/create_key_buttons">
<LinearLayout
android:layout_width="match_parent"
@ -23,40 +22,7 @@
android:layout_marginTop="16dp"
android:layout_marginLeft="8dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/create_key_text" />
<TextView
style="@style/SectionHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/label_user_id" />
<org.sufficientlysecure.keychain.ui.widget.NameEditText
android:id="@+id/create_key_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:imeOptions="actionNext"
android:inputType="textAutoCorrect|textPersonName|textCapWords"
android:hint="@string/create_key_hint_full_name"
android:ems="10" />
<org.sufficientlysecure.keychain.ui.widget.EmailEditText
android:id="@+id/create_key_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:imeOptions="actionNext"
android:hint="@string/label_email"
android:ems="10" />
<TextView
style="@style/SectionHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_passphrase" />
android:text="@string/create_key_passphrase_text" />
<org.sufficientlysecure.keychain.ui.widget.PassphraseEditText
android:id="@+id/create_key_passphrase"
@ -83,17 +49,6 @@
</LinearLayout>
</ScrollView>
<View
android:id="@+id/create_key_button_divider"
android:layout_width="match_parent"
android:layout_height="1dip"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:background="?android:attr/listDivider"
android:layout_alignTop="@+id/create_key_buttons"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -101,45 +56,41 @@
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:background="@color/holo_gray_bright"
android:id="@+id/create_key_buttons">
<TextView
android:id="@+id/create_key_back_button"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text=""
android:text="@string/btn_back"
android:textAllCaps="true"
android:minHeight="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical"
android:layout_gravity="center_vertical" />
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:background="?android:attr/listDivider" />
android:drawableLeft="@drawable/ic_chevron_left_grey_24dp"
android:drawablePadding="8dp"
android:gravity="left|center_vertical"
android:clickable="true"
style="?android:attr/borderlessButtonStyle" />
<TextView
android:id="@+id/create_key_button"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:id="@+id/create_key_next_button"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/btn_next"
android:textAllCaps="true"
android:minHeight="?android:attr/listPreferredItemHeight"
android:drawableRight="@drawable/ic_play_arrow_grey_24dp"
android:drawableRight="@drawable/ic_chevron_right_grey_24dp"
android:drawablePadding="8dp"
android:gravity="center_vertical"
android:gravity="right|center_vertical"
android:clickable="true"
style="?android:attr/borderlessButtonStyle"
android:layout_gravity="center_vertical" />
style="?android:attr/borderlessButtonStyle" />
</LinearLayout>
</RelativeLayout>

View File

@ -464,7 +464,7 @@
<string name="create_key_final_robot_text">Vytvoření klíče může chvíli trvat, mezitím si dejte třeba šálek dobré kávy...</string>
<string name="create_key_rsa">(3 podklíče, RSA, 4096 bit)</string>
<string name="create_key_custom">(uživatelská konfigurace klíče)</string>
<string name="create_key_text">Zadejte své celé jméno, emailovou adresu a zvolte heslo.</string>
<string name="create_key_identity_text">Zadejte své celé jméno, emailovou adresu a zvolte heslo.</string>
<string name="create_key_hint_full_name">Celé jméno, např. Jan Novák</string>
<string name="create_key_edit">Změnit konfiguraci klíče</string>
<!--View key-->

View File

@ -528,7 +528,7 @@
<string name="create_key_final_robot_text">Einen Schlüssel zu erzeugen braucht eine Weile, trink in der Zeit einen Kaffee...</string>
<string name="create_key_rsa">(3 Unterschlüssel, RSA, 4096 Bit)</string>
<string name="create_key_custom">(Benutzerdefinierte Schlüsseleinstellung)</string>
<string name="create_key_text">Vollen Namen und Emailadresse angeben und Passwort wählen.</string>
<string name="create_key_identity_text">Vollen Namen und Emailadresse angeben und Passwort wählen.</string>
<string name="create_key_hint_full_name">Vollständiger Name, z.B. Max Mustermann</string>
<string name="create_key_edit">Schlüsselkonfiguration ändern</string>
<!--View key-->

View File

@ -575,7 +575,7 @@
<string name="create_key_final_robot_text">Crear una clave puede llevar un tiempo, tómese una taza de café entre tanto...</string>
<string name="create_key_rsa">(3 subclaves, RSA, 4096 bits)</string>
<string name="create_key_custom">(configuración de clave personalizada)</string>
<string name="create_key_text">Introduzca su nombre completo, dirección de correo electrónico, y elija una frase contraseña.</string>
<string name="create_key_identity_text">Introduzca su nombre completo, dirección de correo electrónico, y elija una frase contraseña.</string>
<string name="create_key_hint_full_name">Nombre completo, ej. Max Mustermann</string>
<string name="create_key_edit">Cambiar configuración de clave</string>
<!--View key-->

View File

@ -573,7 +573,7 @@
<string name="create_key_final_robot_text">Créer une clef peut prendre du temps, prenez donc un café en attendant...</string>
<string name="create_key_rsa">(3 sous-clefs, RSA, 4096 bits)</string>
<string name="create_key_custom">(configuration personnalisée de la clef)</string>
<string name="create_key_text">Saisissez votre nom complet, votre adresse courriel et choisissez votre phrase de passe.</string>
<string name="create_key_identity_text">Saisissez votre nom complet, votre adresse courriel et choisissez votre phrase de passe.</string>
<string name="create_key_hint_full_name">Nom complet, p. ex. Marc-Olivier Lagacé</string>
<string name="create_key_edit">Changer la configuration de la clef</string>
<!--View key-->

View File

@ -482,7 +482,7 @@ Permetti accesso?\n\nATTENZIONE: Se non sai perche\' questo schermata e\' appars
<string name="create_key_final_robot_text">La creazione di una chiave richiede un po\' di tempo, prendi un caffè nel frattempo...</string>
<string name="create_key_rsa">(3 sottochiavi, RSA, 4096 bit)</string>
<string name="create_key_custom">(personalizza la configurazione della chiave)</string>
<string name="create_key_text">Inserisci Nome Completo, Email e scegli una Frase di Accesso.</string>
<string name="create_key_identity_text">Inserisci Nome Completo, Email e scegli una Frase di Accesso.</string>
<string name="create_key_hint_full_name">Nome completo, es: Mario Rossi</string>
<string name="create_key_edit">Cambia configurazione della chiave</string>
<!--View key-->

View File

@ -532,7 +532,7 @@
<string name="create_key_final_robot_text">しばらくの間鍵を生成しています、その間はコーヒーでもどうぞ....</string>
<string name="create_key_rsa">(3副鍵、RSA, 4096 bit)</string>
<string name="create_key_custom">(個別の鍵設定)</string>
<string name="create_key_text">フルネーム、Eメールアドレスを入力そしてパスフレーズを選択してください。</string>
<string name="create_key_identity_text">フルネーム、Eメールアドレスを入力そしてパスフレーズを選択してください。</string>
<string name="create_key_hint_full_name">フルネーム、例えば Max Mustermann</string>
<string name="create_key_edit">鍵の設定変更</string>
<!--View key-->

View File

@ -575,7 +575,7 @@
<string name="create_key_final_robot_text">Een sleutel aanmaken kan even duren, maak intussen een tasje thee klaar…</string>
<string name="create_key_rsa">(3 subsleutels, RSA, 4096 bit)</string>
<string name="create_key_custom">(aangepaste sleutelconfiguratie)</string>
<string name="create_key_text">Voer je volledige naam en e-mailadres in, en kies een wachtwoord.</string>
<string name="create_key_identity_text">Voer je volledige naam en e-mailadres in, en kies een wachtwoord.</string>
<string name="create_key_hint_full_name">Volledige naam, bv. Max Mustermann</string>
<string name="create_key_edit">Sleutelconfiguratie wijzigen</string>
<!--View key-->

View File

@ -540,7 +540,7 @@ OSTRZEŻENIE: Jeżeli nie wiesz, czemu wyświetlił się ten komunikat, nie zezw
<string name="create_key_final_robot_text">Tworzenie klucza może zająć trochę czasu... w międzyczasie idź się napij kawy.</string>
<string name="create_key_rsa">(3 pod-klucze, RSA, 4096 bit)</string>
<string name="create_key_custom">(niestandardowa konfiguracja kluczy)</string>
<string name="create_key_text">Wpisz swoje imię, adres email oraz wybierz hasło.</string>
<string name="create_key_identity_text">Wpisz swoje imię, adres email oraz wybierz hasło.</string>
<string name="create_key_hint_full_name">Imię i nazwisko, na przykład, Jan Kowalski</string>
<string name="create_key_edit">Zmień klucz konfiguracji</string>
<!--View key-->

View File

@ -490,7 +490,7 @@
<string name="create_key_final_robot_text">Создание ключа займет некоторое время, можете пока выпить чашечку кофе...</string>
<string name="create_key_rsa">(3 доп. ключа, RSA, 4096 bit)</string>
<string name="create_key_custom">(произвольная конфигурация ключа)</string>
<string name="create_key_text">Укажите полное имя, адрес почты и придумайте надежный пароль.</string>
<string name="create_key_identity_text">Укажите полное имя, адрес почты и придумайте надежный пароль.</string>
<string name="create_key_hint_full_name">Полное имя, напр. Иван Хлестаков</string>
<string name="create_key_edit">Изменить конфигурацию ключа</string>
<!--View key-->

View File

@ -558,7 +558,7 @@
<string name="create_key_final_robot_text">Прављење кључа може да потраје, попијте кафу у међувремену…</string>
<string name="create_key_rsa">(3 поткључа, РСА, 4096 бита)</string>
<string name="create_key_custom">(прилагођена конфигурација кључа)</string>
<string name="create_key_text">Унесите пуно име, адресу е-поште и укуцајте лозинку.</string>
<string name="create_key_identity_text">Унесите пуно име, адресу е-поште и укуцајте лозинку.</string>
<string name="create_key_hint_full_name">Пуно име, нпр. Петар Петровић</string>
<string name="create_key_edit">Промени конфигурацију кључа</string>
<!--View key-->

View File

@ -521,7 +521,7 @@
<string name="create_key_final_robot_text">Att skapa en nyckel kan ta ett tag, drick en kopp kaffe under tiden…</string>
<string name="create_key_rsa">(3 undernycklar, RSA, 4096 bit)</string>
<string name="create_key_custom">(anpassad nyckelkonfiguration)</string>
<string name="create_key_text">Ange ditt fullständiga namn, e-postadress och välj en lösenordsfras.</string>
<string name="create_key_identity_text">Ange ditt fullständiga namn, e-postadress och välj en lösenordsfras.</string>
<string name="create_key_hint_full_name">Fullständigt namn, t.ex. Kalle Svensson</string>
<string name="create_key_edit">Ändra nyckelkonfiguration</string>
<!--View key-->

View File

@ -449,7 +449,7 @@
<string name="create_key_final_robot_text">Anahtar oluşturma biraz zaman alabilir, bu sırada bir çay için...</string>
<string name="create_key_rsa">(3 alt anahtar, RSA, 4096 bit)</string>
<string name="create_key_custom">(özel anahtar yapılandırması)</string>
<string name="create_key_text">Tam isminizi, e-posta adresinizi girin ve bir parola seçin.</string>
<string name="create_key_identity_text">Tam isminizi, e-posta adresinizi girin ve bir parola seçin.</string>
<string name="create_key_hint_full_name">Tam Ad, örneğin: Max Mustermann</string>
<string name="create_key_edit">Anahtar yapılandırmasını değiştir.</string>
<!--View key-->

View File

@ -449,7 +449,7 @@
<string name="create_key_empty">Це поле - обов\'язкове</string>
<string name="create_key_passphrases_not_equal">Паролі фрази не збігаються</string>
<string name="create_key_final_text">Ви ввели наступну сутність:</string>
<string name="create_key_text">Введіть ваше повне ім\'я, електронну адреса та оберіть парольну фразу.</string>
<string name="create_key_identity_text">Введіть ваше повне ім\'я, електронну адреса та оберіть парольну фразу.</string>
<string name="create_key_hint_full_name">Повне ім\'я, наприклад Степан Бандера</string>
<!--View key-->
<!--Navigation Drawer-->

View File

@ -377,7 +377,7 @@
<string name="create_key_empty">必填欄位</string>
<string name="create_key_passphrases_not_equal">口令不相符</string>
<string name="create_key_final_robot_text">建立金鑰可能需要一點時間,來杯咖啡吧…</string>
<string name="create_key_text">輸入你的全名、電子郵件,並選擇一組口令。</string>
<string name="create_key_identity_text">輸入你的全名、電子郵件,並選擇一組口令。</string>
<!--View key-->
<!--Navigation Drawer-->
<string name="nav_keys">金鑰</string>

View File

@ -627,8 +627,10 @@
<string name="create_key_final_robot_text">"Creating a key may take a while, have a cup of coffee in the meantime…"</string>
<string name="create_key_rsa">"(3 subkeys, RSA, 4096 bit)"</string>
<string name="create_key_custom">"(custom key configuration)"</string>
<string name="create_key_text">"Enter your full name, email address, and choose a passhrase."</string>
<string name="create_key_hint_full_name">"Full Name, e.g. Max Mustermann"</string>
<string name="create_key_name_text">"Choose a name associated with this key. This can be a full name, e.g., 'John Doe', or a nickname, e.g., 'Johnny'."</string>
<string name="create_key_email_text">"Choose the email address used for encrypted communication."</string>
<string name="create_key_passphrase_text">"Choose a strong passphrase. It protects your key when your device gets stolen."</string>
<string name="create_key_hint_full_name">"Full Name or Nickname"</string>
<string name="create_key_edit">"Change key configuration"</string>
<!-- View key -->