Improved set password UI

This commit is contained in:
str4d
2014-03-08 20:54:04 +00:00
parent e89c5ace86
commit f8a228391a
7 changed files with 68 additions and 69 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -7,64 +7,37 @@
android:paddingRight="10dp"
android:paddingTop="10dp" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/old_password"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/password_old"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/old_password"
android:inputType="textPassword" >
<requestFocus />
</EditText>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/new_password"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/password_new"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/new_password"
android:inputType="textPassword" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/confirm_new_password"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/password_confirm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/confirm_new_password"
android:inputType="textPassword" />
<LinearLayout
android:layout_width="match_parent"
<TextView
android:id="@+id/error"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/submit_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="OK" />
<TextView
android:id="@+id/error"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/error_color" />
</LinearLayout>
android:textColor="@color/error_color" />
</LinearLayout>

11
res/menu/set_password.xml Normal file
View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:i2pandroid="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/action_set_password"
android:icon="@drawable/ic_content_save"
android:title="@string/pref_title_change_password"
i2pandroid:showAsAction="ifRoom"/>
</menu>

View File

@@ -55,9 +55,9 @@
<string name="pref_title_i2cp_port">I2CP port</string>
<string name="pref_title_change_password">Change password</string>
<string name="old_password">Old password:</string>
<string name="new_password">New password:</string>
<string name="confirm_new_password">Confirm new password:</string>
<string name="old_password">Old password</string>
<string name="new_password">New password</string>
<string name="confirm_new_password">Confirm new password</string>
<string name="password_changed">Password changed successfully</string>
<string name="pref_title_identities">Identities</string>

View File

@@ -12,10 +12,12 @@ import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
@@ -50,12 +52,16 @@ public class SetPasswordFragment extends Fragment {
static final String PASSWORD_WAITER_TAG = "passwordWaiterTask";
private FragmentManager mFM;
Button mSubmit;
MenuItem mSave;
EditText mOldField;
EditText mNewField;
EditText mConfirmField;
TextView mError;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
mFM = getFragmentManager();
PasswordWaiterFrag f = (PasswordWaiterFrag) mFM.findFragmentByTag(PASSWORD_WAITER_TAG);
@@ -73,39 +79,48 @@ public class SetPasswordFragment extends Fragment {
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
final EditText oldField = (EditText) view.findViewById(R.id.password_old);
final EditText newField = (EditText) view.findViewById(R.id.password_new);
final EditText confirmField = (EditText) view.findViewById(R.id.password_confirm);
mSubmit = (Button) view.findViewById(R.id.submit_password);
mOldField = (EditText) view.findViewById(R.id.password_old);
mNewField = (EditText) view.findViewById(R.id.password_new);
mConfirmField = (EditText) view.findViewById(R.id.password_confirm);
mError = (TextView) view.findViewById(R.id.error);
}
// If task is running, disable the submit button.
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.set_password, menu);
mSave = menu.findItem(R.id.action_set_password);
// If task is running, disable the save button.
PasswordWaiterFrag f = (PasswordWaiterFrag) mFM.findFragmentByTag(PASSWORD_WAITER_TAG);
if (f != null) {
mSubmit.setEnabled(false);
if (f != null)
mSave.setVisible(false);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_set_password:
String oldPassword = mOldField.getText().toString();
String newPassword = mNewField.getText().toString();
String confirmNewPassword = mConfirmField.getText().toString();
InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mNewField.getWindowToken(), 0);
mSave.setVisible(false);
mError.setText("");
PasswordWaiterFrag f = PasswordWaiterFrag.newInstance(oldPassword, newPassword, confirmNewPassword);
f.setTask(new PasswordWaiter());
f.setTargetFragment(SetPasswordFragment.this, PASSWORD_WAITER);
mFM.beginTransaction()
.replace(R.id.password_waiter_frag, f, PASSWORD_WAITER_TAG)
.commit();
return true;
default:
return super.onOptionsItemSelected(item);
}
mSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String oldPassword = oldField.getText().toString();
String newPassword = newField.getText().toString();
String confirmNewPassword = confirmField.getText().toString();
InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(newField.getWindowToken(), 0);
mSubmit.setEnabled(false);
mError.setText("");
PasswordWaiterFrag f = PasswordWaiterFrag.newInstance(oldPassword, newPassword, confirmNewPassword);
f.setTask(new PasswordWaiter());
f.setTargetFragment(SetPasswordFragment.this, PASSWORD_WAITER);
mFM.beginTransaction()
.replace(R.id.password_waiter_frag, f, PASSWORD_WAITER_TAG)
.commit();
}
});
}
@Override
@@ -114,7 +129,7 @@ public class SetPasswordFragment extends Fragment {
if (resultCode == Activity.RESULT_OK) {
mCallbacks.onTaskFinished();
} else if (resultCode == Activity.RESULT_CANCELED) {
mSubmit.setEnabled(true);
mSave.setVisible(true);
mError.setText(data.getStringExtra("error"));
}
}