From 67076b20196cd522f519e6ea156ddc34e20977d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Mon, 9 Mar 2015 22:00:44 +0100 Subject: Make create key wizard step-by-step --- OpenKeychain/src/main/AndroidManifest.xml | 2 +- .../keychain/ui/CreateKeyActivity.java | 4 +- .../keychain/ui/CreateKeyEmailFragment.java | 134 ++++++++++++++++ .../keychain/ui/CreateKeyFinalFragment.java | 2 +- .../keychain/ui/CreateKeyInputFragment.java | 167 -------------------- .../keychain/ui/CreateKeyNameFragment.java | 140 +++++++++++++++++ .../keychain/ui/CreateKeyPassphraseFragment.java | 170 +++++++++++++++++++++ .../drawable-hdpi/ic_chevron_left_grey_24dp.png | Bin 0 -> 276 bytes .../drawable-hdpi/ic_chevron_right_grey_24dp.png | Bin 0 -> 271 bytes .../main/res/drawable-hdpi/ic_person_grey_48dp.png | Bin 0 -> 576 bytes .../drawable-mdpi/ic_chevron_left_grey_24dp.png | Bin 0 -> 240 bytes .../drawable-mdpi/ic_chevron_right_grey_24dp.png | Bin 0 -> 225 bytes .../main/res/drawable-mdpi/ic_person_grey_48dp.png | Bin 0 -> 431 bytes .../drawable-xhdpi/ic_chevron_left_grey_24dp.png | Bin 0 -> 314 bytes .../drawable-xhdpi/ic_chevron_right_grey_24dp.png | Bin 0 -> 305 bytes .../res/drawable-xhdpi/ic_person_grey_48dp.png | Bin 0 -> 751 bytes .../drawable-xxhdpi/ic_chevron_left_grey_24dp.png | Bin 0 -> 382 bytes .../drawable-xxhdpi/ic_chevron_right_grey_24dp.png | Bin 0 -> 388 bytes .../res/drawable-xxhdpi/ic_person_grey_48dp.png | Bin 0 -> 1121 bytes .../drawable-xxxhdpi/ic_chevron_left_grey_24dp.png | Bin 0 -> 481 bytes .../ic_chevron_right_grey_24dp.png | Bin 0 -> 472 bytes .../res/drawable-xxxhdpi/ic_person_grey_48dp.png | Bin 0 -> 1488 bytes .../main/res/layout/create_key_email_fragment.xml | 84 ++++++++++ .../main/res/layout/create_key_final_fragment.xml | 46 ++---- .../main/res/layout/create_key_input_fragment.xml | 145 ------------------ .../main/res/layout/create_key_name_fragment.xml | 83 ++++++++++ .../res/layout/create_key_passphrase_fragment.xml | 96 ++++++++++++ OpenKeychain/src/main/res/values-cs/strings.xml | 2 +- OpenKeychain/src/main/res/values-de/strings.xml | 2 +- OpenKeychain/src/main/res/values-es/strings.xml | 2 +- OpenKeychain/src/main/res/values-fr/strings.xml | 2 +- OpenKeychain/src/main/res/values-it/strings.xml | 2 +- OpenKeychain/src/main/res/values-ja/strings.xml | 2 +- OpenKeychain/src/main/res/values-nl/strings.xml | 2 +- OpenKeychain/src/main/res/values-pl/strings.xml | 2 +- OpenKeychain/src/main/res/values-ru/strings.xml | 2 +- OpenKeychain/src/main/res/values-sr/strings.xml | 2 +- OpenKeychain/src/main/res/values-sv/strings.xml | 2 +- OpenKeychain/src/main/res/values-tr/strings.xml | 2 +- OpenKeychain/src/main/res/values-uk/strings.xml | 2 +- .../src/main/res/values-zh-rTW/strings.xml | 2 +- OpenKeychain/src/main/res/values/strings.xml | 6 +- 42 files changed, 744 insertions(+), 363 deletions(-) create mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyEmailFragment.java delete mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java create mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyNameFragment.java create mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyPassphraseFragment.java create mode 100644 OpenKeychain/src/main/res/drawable-hdpi/ic_chevron_left_grey_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-hdpi/ic_chevron_right_grey_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-hdpi/ic_person_grey_48dp.png create mode 100644 OpenKeychain/src/main/res/drawable-mdpi/ic_chevron_left_grey_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-mdpi/ic_chevron_right_grey_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-mdpi/ic_person_grey_48dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xhdpi/ic_chevron_left_grey_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xhdpi/ic_chevron_right_grey_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xhdpi/ic_person_grey_48dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxhdpi/ic_chevron_left_grey_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxhdpi/ic_chevron_right_grey_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxhdpi/ic_person_grey_48dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxxhdpi/ic_chevron_left_grey_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxxhdpi/ic_chevron_right_grey_24dp.png create mode 100644 OpenKeychain/src/main/res/drawable-xxxhdpi/ic_person_grey_48dp.png create mode 100644 OpenKeychain/src/main/res/layout/create_key_email_fragment.xml delete mode 100644 OpenKeychain/src/main/res/layout/create_key_input_fragment.xml create mode 100644 OpenKeychain/src/main/res/layout/create_key_name_fragment.xml create mode 100644 OpenKeychain/src/main/res/layout/create_key_passphrase_fragment.xml (limited to 'OpenKeychain') diff --git a/OpenKeychain/src/main/AndroidManifest.xml b/OpenKeychain/src/main/AndroidManifest.xml index a1a6ed02e..fbe89bc28 100644 --- a/OpenKeychain/src/main/AndroidManifest.xml +++ b/OpenKeychain/src/main/AndroidManifest.xml @@ -93,7 +93,7 @@ + * + * 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.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); + } + } + +} diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java index 920488e3e..dc9f3d4ad 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyFinalFragment.java @@ -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); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java deleted file mode 100644 index 05408e21e..000000000 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyInputFragment.java +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright (C) 2014 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.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; -import org.sufficientlysecure.keychain.ui.widget.PassphraseEditText; - -public class CreateKeyInputFragment extends Fragment { - - public static final String ARG_NAME = "name"; - public static final String ARG_EMAIL = "email"; - CreateKeyActivity mCreateKeyActivity; - NameEditText mNameEdit; - EmailEditText mEmailEdit; - PassphraseEditText mPassphraseEdit; - EditText mPassphraseEditAgain; - View mCreateButton; - - /** - * Creates new instance of this fragment - */ - public static CreateKeyInputFragment newInstance(String name, String email) { - CreateKeyInputFragment frag = new CreateKeyInputFragment(); - - 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_input_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); - - // 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() { - @Override - public void onClick(View v) { - createKeyCheck(); - } - }); - - return view; - } - - @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - - mCreateKeyActivity = (CreateKeyActivity) getActivity(); - } - - private void createKeyCheck() { - if (isEditTextNotEmpty(getActivity(), mNameEdit) - && isEditTextNotEmpty(getActivity(), mEmailEdit) - && isEditTextNotEmpty(getActivity(), mPassphraseEdit) - && areEditTextsEqual(getActivity(), mPassphraseEdit, mPassphraseEditAgain)) { - - CreateKeyFinalFragment frag = - CreateKeyFinalFragment.newInstance( - mNameEdit.getText().toString(), - mEmailEdit.getText().toString(), - mPassphraseEdit.getText().toString() - ); - - hideKeyboard(); - mCreateKeyActivity.loadFragment(null, frag, FragAction.TO_RIGHT); - } - } - - private void hideKeyboard() { - if (getActivity() == null) { - return; - } - InputMethodManager inputManager = (InputMethodManager) getActivity() - .getSystemService(Context.INPUT_METHOD_SERVICE); - - // check if no view has focus - View v = getActivity().getCurrentFocus(); - if (v == null) - return; - - inputManager.hideSoftInputFromWindow(v.getWindowToken(), 0); - } - -} diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyNameFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyNameFragment.java new file mode 100644 index 000000000..50a3bd655 --- /dev/null +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyNameFragment.java @@ -0,0 +1,140 @@ +/* + * Copyright (C) 2014 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.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); + } + } + +} diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyPassphraseFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyPassphraseFragment.java new file mode 100644 index 000000000..be77d5042 --- /dev/null +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateKeyPassphraseFragment.java @@ -0,0 +1,170 @@ +/* + * Copyright (C) 2014 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.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.PassphraseEditText; + +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; + PassphraseEditText mPassphraseEdit; + EditText mPassphraseEditAgain; + View mBackButton; + View mNextButton; + + /** + * Creates new instance of this fragment + */ + public static CreateKeyPassphraseFragment newInstance(String name, String email) { + CreateKeyPassphraseFragment frag = new CreateKeyPassphraseFragment(); + + 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_passphrase_fragment, container, false); + + mPassphraseEdit = (PassphraseEditText) view.findViewById(R.id.create_key_passphrase); + mPassphraseEditAgain = (EditText) view.findViewById(R.id.create_key_passphrase_again); + 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); + 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(); + } + }); + + return view; + } + + @Override + 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(), mPassphraseEdit) + && areEditTextsEqual(getActivity(), mPassphraseEdit, mPassphraseEditAgain)) { + + CreateKeyFinalFragment frag = + CreateKeyFinalFragment.newInstance( + mName, + mEmail, + mPassphraseEdit.getText().toString() + ); + + hideKeyboard(); + mCreateKeyActivity.loadFragment(null, frag, FragAction.TO_RIGHT); + } + } + + private void hideKeyboard() { + if (getActivity() == null) { + return; + } + InputMethodManager inputManager = (InputMethodManager) getActivity() + .getSystemService(Context.INPUT_METHOD_SERVICE); + + // check if no view has focus + View v = getActivity().getCurrentFocus(); + if (v == null) + return; + + inputManager.hideSoftInputFromWindow(v.getWindowToken(), 0); + } + +} diff --git a/OpenKeychain/src/main/res/drawable-hdpi/ic_chevron_left_grey_24dp.png b/OpenKeychain/src/main/res/drawable-hdpi/ic_chevron_left_grey_24dp.png new file mode 100644 index 000000000..12e39d39d Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-hdpi/ic_chevron_left_grey_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-hdpi/ic_chevron_right_grey_24dp.png b/OpenKeychain/src/main/res/drawable-hdpi/ic_chevron_right_grey_24dp.png new file mode 100644 index 000000000..7eef500d4 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-hdpi/ic_chevron_right_grey_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-hdpi/ic_person_grey_48dp.png b/OpenKeychain/src/main/res/drawable-hdpi/ic_person_grey_48dp.png new file mode 100644 index 000000000..de2a86e89 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-hdpi/ic_person_grey_48dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-mdpi/ic_chevron_left_grey_24dp.png b/OpenKeychain/src/main/res/drawable-mdpi/ic_chevron_left_grey_24dp.png new file mode 100644 index 000000000..56ab24da9 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-mdpi/ic_chevron_left_grey_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-mdpi/ic_chevron_right_grey_24dp.png b/OpenKeychain/src/main/res/drawable-mdpi/ic_chevron_right_grey_24dp.png new file mode 100644 index 000000000..d6581fe23 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-mdpi/ic_chevron_right_grey_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-mdpi/ic_person_grey_48dp.png b/OpenKeychain/src/main/res/drawable-mdpi/ic_person_grey_48dp.png new file mode 100644 index 000000000..738e3490d Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-mdpi/ic_person_grey_48dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/ic_chevron_left_grey_24dp.png b/OpenKeychain/src/main/res/drawable-xhdpi/ic_chevron_left_grey_24dp.png new file mode 100644 index 000000000..df0518a68 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xhdpi/ic_chevron_left_grey_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/ic_chevron_right_grey_24dp.png b/OpenKeychain/src/main/res/drawable-xhdpi/ic_chevron_right_grey_24dp.png new file mode 100644 index 000000000..7b82b8a57 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xhdpi/ic_chevron_right_grey_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/ic_person_grey_48dp.png b/OpenKeychain/src/main/res/drawable-xhdpi/ic_person_grey_48dp.png new file mode 100644 index 000000000..e664e94ac Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xhdpi/ic_person_grey_48dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_chevron_left_grey_24dp.png b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_chevron_left_grey_24dp.png new file mode 100644 index 000000000..10643ae3f Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_chevron_left_grey_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_chevron_right_grey_24dp.png b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_chevron_right_grey_24dp.png new file mode 100644 index 000000000..360d3c5ec Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_chevron_right_grey_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_person_grey_48dp.png b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_person_grey_48dp.png new file mode 100644 index 000000000..5f00cf8a2 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_person_grey_48dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_chevron_left_grey_24dp.png b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_chevron_left_grey_24dp.png new file mode 100644 index 000000000..a5fb05c28 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_chevron_left_grey_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_chevron_right_grey_24dp.png b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_chevron_right_grey_24dp.png new file mode 100644 index 000000000..a71c5b3fc Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_chevron_right_grey_24dp.png differ diff --git a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_person_grey_48dp.png b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_person_grey_48dp.png new file mode 100644 index 000000000..001fe6607 Binary files /dev/null and b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_person_grey_48dp.png differ diff --git a/OpenKeychain/src/main/res/layout/create_key_email_fragment.xml b/OpenKeychain/src/main/res/layout/create_key_email_fragment.xml new file mode 100644 index 000000000..a24d1a2ee --- /dev/null +++ b/OpenKeychain/src/main/res/layout/create_key_email_fragment.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file 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 84625d1fd..830f039f7 100644 --- a/OpenKeychain/src/main/res/layout/create_key_final_fragment.xml +++ b/OpenKeychain/src/main/res/layout/create_key_final_fragment.xml @@ -6,7 +6,7 @@ + android:layout_above="@+id/create_key_buttons"> - - + style="?android:attr/borderlessButtonStyle" /> + style="?android:attr/borderlessButtonStyle" /> - \ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml b/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml deleted file mode 100644 index 2178fcb1f..000000000 --- a/OpenKeychain/src/main/res/layout/create_key_input_fragment.xml +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/create_key_name_fragment.xml b/OpenKeychain/src/main/res/layout/create_key_name_fragment.xml new file mode 100644 index 000000000..ea064b00c --- /dev/null +++ b/OpenKeychain/src/main/res/layout/create_key_name_fragment.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OpenKeychain/src/main/res/layout/create_key_passphrase_fragment.xml b/OpenKeychain/src/main/res/layout/create_key_passphrase_fragment.xml new file mode 100644 index 000000000..4b09c6cac --- /dev/null +++ b/OpenKeychain/src/main/res/layout/create_key_passphrase_fragment.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OpenKeychain/src/main/res/values-cs/strings.xml b/OpenKeychain/src/main/res/values-cs/strings.xml index 903cc50f3..ce4f1cdcf 100644 --- a/OpenKeychain/src/main/res/values-cs/strings.xml +++ b/OpenKeychain/src/main/res/values-cs/strings.xml @@ -464,7 +464,7 @@ Vytvoření klíče může chvíli trvat, mezitím si dejte třeba šálek dobré kávy... (3 podklíče, RSA, 4096 bit) (uživatelská konfigurace klíče) - Zadejte své celé jméno, emailovou adresu a zvolte heslo. + Zadejte své celé jméno, emailovou adresu a zvolte heslo. Celé jméno, např. Jan Novák Změnit konfiguraci klíče diff --git a/OpenKeychain/src/main/res/values-de/strings.xml b/OpenKeychain/src/main/res/values-de/strings.xml index 63b0c4c09..245de82ec 100644 --- a/OpenKeychain/src/main/res/values-de/strings.xml +++ b/OpenKeychain/src/main/res/values-de/strings.xml @@ -528,7 +528,7 @@ Einen Schlüssel zu erzeugen braucht eine Weile, trink in der Zeit einen Kaffee... (3 Unterschlüssel, RSA, 4096 Bit) (Benutzerdefinierte Schlüsseleinstellung) - Vollen Namen und Emailadresse angeben und Passwort wählen. + Vollen Namen und Emailadresse angeben und Passwort wählen. Vollständiger Name, z.B. Max Mustermann Schlüsselkonfiguration ändern diff --git a/OpenKeychain/src/main/res/values-es/strings.xml b/OpenKeychain/src/main/res/values-es/strings.xml index 0d7444c47..d5d8440af 100644 --- a/OpenKeychain/src/main/res/values-es/strings.xml +++ b/OpenKeychain/src/main/res/values-es/strings.xml @@ -575,7 +575,7 @@ Crear una clave puede llevar un tiempo, tómese una taza de café entre tanto... (3 subclaves, RSA, 4096 bits) (configuración de clave personalizada) - Introduzca su nombre completo, dirección de correo electrónico, y elija una frase contraseña. + Introduzca su nombre completo, dirección de correo electrónico, y elija una frase contraseña. Nombre completo, ej. Max Mustermann Cambiar configuración de clave diff --git a/OpenKeychain/src/main/res/values-fr/strings.xml b/OpenKeychain/src/main/res/values-fr/strings.xml index 50bd53921..8cc1cc735 100644 --- a/OpenKeychain/src/main/res/values-fr/strings.xml +++ b/OpenKeychain/src/main/res/values-fr/strings.xml @@ -573,7 +573,7 @@ Créer une clef peut prendre du temps, prenez donc un café en attendant... (3 sous-clefs, RSA, 4096 bits) (configuration personnalisée de la clef) - Saisissez votre nom complet, votre adresse courriel et choisissez votre phrase de passe. + Saisissez votre nom complet, votre adresse courriel et choisissez votre phrase de passe. Nom complet, p. ex. Marc-Olivier Lagacé Changer la configuration de la clef diff --git a/OpenKeychain/src/main/res/values-it/strings.xml b/OpenKeychain/src/main/res/values-it/strings.xml index d741f7111..f55d16dfc 100644 --- a/OpenKeychain/src/main/res/values-it/strings.xml +++ b/OpenKeychain/src/main/res/values-it/strings.xml @@ -482,7 +482,7 @@ Permetti accesso?\n\nATTENZIONE: Se non sai perche\' questo schermata e\' appars La creazione di una chiave richiede un po\' di tempo, prendi un caffè nel frattempo... (3 sottochiavi, RSA, 4096 bit) (personalizza la configurazione della chiave) - Inserisci Nome Completo, Email e scegli una Frase di Accesso. + Inserisci Nome Completo, Email e scegli una Frase di Accesso. Nome completo, es: Mario Rossi Cambia configurazione della chiave diff --git a/OpenKeychain/src/main/res/values-ja/strings.xml b/OpenKeychain/src/main/res/values-ja/strings.xml index c5318db36..ef817f398 100644 --- a/OpenKeychain/src/main/res/values-ja/strings.xml +++ b/OpenKeychain/src/main/res/values-ja/strings.xml @@ -532,7 +532,7 @@ しばらくの間鍵を生成しています、その間はコーヒーでもどうぞ.... (3副鍵、RSA, 4096 bit) (個別の鍵設定) - フルネーム、Eメールアドレスを入力そしてパスフレーズを選択してください。 + フルネーム、Eメールアドレスを入力そしてパスフレーズを選択してください。 フルネーム、例えば Max Mustermann 鍵の設定変更 diff --git a/OpenKeychain/src/main/res/values-nl/strings.xml b/OpenKeychain/src/main/res/values-nl/strings.xml index 34b8f1627..f8ee75750 100644 --- a/OpenKeychain/src/main/res/values-nl/strings.xml +++ b/OpenKeychain/src/main/res/values-nl/strings.xml @@ -575,7 +575,7 @@ Een sleutel aanmaken kan even duren, maak intussen een tasje thee klaar… (3 subsleutels, RSA, 4096 bit) (aangepaste sleutelconfiguratie) - Voer je volledige naam en e-mailadres in, en kies een wachtwoord. + Voer je volledige naam en e-mailadres in, en kies een wachtwoord. Volledige naam, bv. Max Mustermann Sleutelconfiguratie wijzigen diff --git a/OpenKeychain/src/main/res/values-pl/strings.xml b/OpenKeychain/src/main/res/values-pl/strings.xml index 3dc6a2a35..46dd8c313 100644 --- a/OpenKeychain/src/main/res/values-pl/strings.xml +++ b/OpenKeychain/src/main/res/values-pl/strings.xml @@ -540,7 +540,7 @@ OSTRZEŻENIE: Jeżeli nie wiesz, czemu wyświetlił się ten komunikat, nie zezw Tworzenie klucza może zająć trochę czasu... w międzyczasie idź się napij kawy. (3 pod-klucze, RSA, 4096 bit) (niestandardowa konfiguracja kluczy) - Wpisz swoje imię, adres email oraz wybierz hasło. + Wpisz swoje imię, adres email oraz wybierz hasło. Imię i nazwisko, na przykład, Jan Kowalski Zmień klucz konfiguracji diff --git a/OpenKeychain/src/main/res/values-ru/strings.xml b/OpenKeychain/src/main/res/values-ru/strings.xml index dc1c81bb4..211433d26 100644 --- a/OpenKeychain/src/main/res/values-ru/strings.xml +++ b/OpenKeychain/src/main/res/values-ru/strings.xml @@ -490,7 +490,7 @@ Создание ключа займет некоторое время, можете пока выпить чашечку кофе... (3 доп. ключа, RSA, 4096 bit) (произвольная конфигурация ключа) - Укажите полное имя, адрес почты и придумайте надежный пароль. + Укажите полное имя, адрес почты и придумайте надежный пароль. Полное имя, напр. Иван Хлестаков Изменить конфигурацию ключа diff --git a/OpenKeychain/src/main/res/values-sr/strings.xml b/OpenKeychain/src/main/res/values-sr/strings.xml index 11639e2eb..73094c5a4 100644 --- a/OpenKeychain/src/main/res/values-sr/strings.xml +++ b/OpenKeychain/src/main/res/values-sr/strings.xml @@ -558,7 +558,7 @@ Прављење кључа може да потраје, попијте кафу у међувремену… (3 поткључа, РСА, 4096 бита) (прилагођена конфигурација кључа) - Унесите пуно име, адресу е-поште и укуцајте лозинку. + Унесите пуно име, адресу е-поште и укуцајте лозинку. Пуно име, нпр. Петар Петровић Промени конфигурацију кључа diff --git a/OpenKeychain/src/main/res/values-sv/strings.xml b/OpenKeychain/src/main/res/values-sv/strings.xml index a24fe7ee7..d22eea22a 100644 --- a/OpenKeychain/src/main/res/values-sv/strings.xml +++ b/OpenKeychain/src/main/res/values-sv/strings.xml @@ -521,7 +521,7 @@ Att skapa en nyckel kan ta ett tag, drick en kopp kaffe under tiden… (3 undernycklar, RSA, 4096 bit) (anpassad nyckelkonfiguration) - Ange ditt fullständiga namn, e-postadress och välj en lösenordsfras. + Ange ditt fullständiga namn, e-postadress och välj en lösenordsfras. Fullständigt namn, t.ex. Kalle Svensson Ändra nyckelkonfiguration diff --git a/OpenKeychain/src/main/res/values-tr/strings.xml b/OpenKeychain/src/main/res/values-tr/strings.xml index 7b6a976f5..ee5306cc7 100644 --- a/OpenKeychain/src/main/res/values-tr/strings.xml +++ b/OpenKeychain/src/main/res/values-tr/strings.xml @@ -449,7 +449,7 @@ Anahtar oluşturma biraz zaman alabilir, bu sırada bir çay için... (3 alt anahtar, RSA, 4096 bit) (özel anahtar yapılandırması) - Tam isminizi, e-posta adresinizi girin ve bir parola seçin. + Tam isminizi, e-posta adresinizi girin ve bir parola seçin. Tam Ad, örneğin: Max Mustermann Anahtar yapılandırmasını değiştir. diff --git a/OpenKeychain/src/main/res/values-uk/strings.xml b/OpenKeychain/src/main/res/values-uk/strings.xml index cf586b2d5..365821f4a 100644 --- a/OpenKeychain/src/main/res/values-uk/strings.xml +++ b/OpenKeychain/src/main/res/values-uk/strings.xml @@ -449,7 +449,7 @@ Це поле - обов\'язкове Паролі фрази не збігаються Ви ввели наступну сутність: - Введіть ваше повне ім\'я, електронну адреса та оберіть парольну фразу. + Введіть ваше повне ім\'я, електронну адреса та оберіть парольну фразу. Повне ім\'я, наприклад Степан Бандера diff --git a/OpenKeychain/src/main/res/values-zh-rTW/strings.xml b/OpenKeychain/src/main/res/values-zh-rTW/strings.xml index b6ab2c8a4..b5b57d91f 100644 --- a/OpenKeychain/src/main/res/values-zh-rTW/strings.xml +++ b/OpenKeychain/src/main/res/values-zh-rTW/strings.xml @@ -377,7 +377,7 @@ 必填欄位 口令不相符 建立金鑰可能需要一點時間,來杯咖啡吧… - 輸入你的全名、電子郵件,並選擇一組口令。 + 輸入你的全名、電子郵件,並選擇一組口令。 金鑰 diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index 2c83ac070..b45fb1c27 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -626,8 +626,10 @@ "Creating a key may take a while, have a cup of coffee in the meantime…" "(3 subkeys, RSA, 4096 bit)" "(custom key configuration)" - "Enter your full name, email address, and choose a passhrase." - "Full Name, e.g. Max Mustermann" + "Choose a name associated with this key. This can be a full name, e.g., 'John Doe', or a nickname, e.g., 'Johnny'." + "Choose the email address used for encrypted communication." + "Choose a strong passphrase. It protects your key when your device gets stolen." + "Full Name or Nickname" "Change key configuration" -- cgit v1.2.3