Activity for editing entries is built, except for hooking up the Save button.

This commit is contained in:
Brian Pellin
2009-05-06 00:51:14 -05:00
parent ad70b61378
commit 5b86e1373e
6 changed files with 297 additions and 8 deletions

View File

@@ -15,5 +15,6 @@
<meta-data android:name="com.a0soft.gphone.aTrackDog.webURL" android:value="http://keepassdroid.com" />
<service android:name=".services.TimeoutService"></service>
<activity android:name=".LockingActivity"></activity>
<activity android:name=".EntryEditActivity"></activity>
</application>
</manifest>

99
res/layout/entry_edit.xml Normal file
View File

@@ -0,0 +1,99 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2009 Brian Pellin.
This file is part of KeePassDroid.
KeePassDroid 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.
KeePassDroid 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 KeePassDroid. If not, see <http://www.gnu.org/licenses/>.
-->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/entry_scrollview"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- Title -->
<TextView android:id="@+id/entry_title_label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/entry_title" />
<EditText android:id="@+id/entry_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/entry_title_label"/>
<!-- Username -->
<TextView android:id="@+id/entry_user_name_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/entry_title"
android:text="@string/entry_user_name" />
<EditText android:id="@+id/entry_user_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/entry_user_name_label"/>
<!-- URL -->
<TextView android:id="@+id/entry_url_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/entry_user_name"
android:text="@string/entry_url" />
<EditText android:id="@+id/entry_url"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/entry_url_label"/>
<!-- Password -->
<TextView android:id="@+id/entry_password_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/entry_url"
android:text="@string/entry_password" />
<EditText android:id="@+id/entry_password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:password="true"
android:layout_below="@id/entry_password_label"/>
<!-- Confirm Password -->
<TextView android:id="@+id/entry_confpassword_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/entry_password"
android:text="@string/entry_confpassword" />
<EditText android:id="@+id/entry_confpassword"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:password="true"
android:layout_below="@id/entry_confpassword_label"/>
<!-- Comment -->
<TextView android:id="@+id/entry_comment_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/entry_confpassword"
android:text="@string/entry_comment" />
<EditText android:id="@+id/entry_comment"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/entry_comment_label"/>
<Button android:id="@+id/entry_save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/entry_comment"
android:text="@string/entry_save"/>
<Button android:id="@+id/entry_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/entry_comment"
android:layout_toRightOf="@id/entry_save"
android:text="@string/entry_cancel"/>
</RelativeLayout>
</ScrollView>

View File

@@ -66,6 +66,7 @@
<TextView android:id="@+id/entry_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:password="true"
android:layout_alignLeft="@id/entry_title"
android:layout_alignParentRight="true"
android:layout_alignTop="@id/entry_password_label"/>
@@ -123,6 +124,12 @@
android:layout_alignParentBottom="true"
android:scrollbars="vertical"
android:layout_alignTop="@id/entry_comment_label"/>
<Button android:id="@+id/entry_edit"
android:text="Edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"/>
<!--
<ScrollView android:layout_width="wrap_content"
android:layout_height="wrap_content">

View File

@@ -41,4 +41,7 @@
<string name="entry_created">Created: </string>
<string name="entry_modified">Modified: </string>
<string name="entry_accessed">Accessed: </string>
<string name="entry_save">Save</string>
<string name="entry_cancel">Cancel</string>
<string name="entry_confpassword">Confirm password:</string>
</resources>

View File

@@ -32,10 +32,12 @@ import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.text.method.PasswordTransformationMethod;
import android.text.method.ScrollingMovementMethod;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class EntryActivity extends LockingActivity {
@@ -59,7 +61,7 @@ public class EntryActivity extends LockingActivity {
private PwEntry mEntry;
private Timer mTimer = new Timer();
private boolean showPassword = true;
private boolean mShowPassword = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -76,15 +78,25 @@ public class EntryActivity extends LockingActivity {
// Update last access time.
Calendar cal = Calendar.getInstance();
mEntry.tLastAccess = cal.getTime();
fillData();
Button edit = (Button) findViewById(R.id.entry_edit);
edit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EntryEditActivity.Launch(EntryActivity.this, mEntry);
}
});
}
private void fillData() {
populateText(R.id.entry_title, mEntry.title);
populateText(R.id.entry_user_name, mEntry.username);
populateText(R.id.entry_url, mEntry.url);
populateText(R.id.entry_password, getString(R.string.MaskedPassword));
populateText(R.id.entry_password, new String(mEntry.getPassword()));
setPasswordStyle();
DateFormat df = DateFormat.getInstance();
populateText(R.id.entry_created, df.format(mEntry.tCreation));
@@ -120,19 +132,29 @@ public class EntryActivity extends LockingActivity {
return true;
}
private void setPasswordStyle() {
TextView password = (TextView) findViewById(R.id.entry_password);
if ( mShowPassword ) {
password.setTransformationMethod(null);
} else {
password.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch ( item.getItemId() ) {
case MENU_PASS:
if ( showPassword ) {
populateText(R.id.entry_password, new String(mEntry.getPassword()));
if ( mShowPassword ) {
item.setTitle(R.string.menu_hide_password);
showPassword = false;
mShowPassword = false;
} else {
populateText(R.id.entry_password, getString(R.string.MaskedPassword));
item.setTitle(R.string.menu_show_password);
showPassword = true;
mShowPassword = true;
}
setPasswordStyle();
return true;
case MENU_GOTO_URL:

View File

@@ -0,0 +1,157 @@
/*
* Copyright 2009 Brian Pellin.
*
* This file is part of KeePassDroid.
*
* KeePassDroid 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 2 of the License, or
* (at your option) any later version.
*
* KeePassDroid 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 KeePassDroid. If not, see <http://www.gnu.org/licenses/>.
*
*/
package com.android.keepass;
import java.util.UUID;
import org.phoneid.keepassj2me.PwEntry;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.method.PasswordTransformationMethod;
import android.text.method.ScrollingMovementMethod;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class EntryEditActivity extends LockingActivity {
public static final String KEY_ENTRY = "entry";
private static final int MENU_PASS = Menu.FIRST;
private PwEntry mEntry;
private boolean mShowPassword = false;
public static void Launch(Activity act, PwEntry pw) {
Intent i = new Intent(act, EntryEditActivity.class);
i.putExtra(KEY_ENTRY, pw.uuid);
act.startActivity(i);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.entry_edit);
Intent i = getIntent();
UUID uuid = UUID.nameUUIDFromBytes(i.getByteArrayExtra(KEY_ENTRY));
assert(uuid != null);
mEntry = Database.gEntries.get(uuid).get();
View scrollView = findViewById(R.id.entry_scrollview);
scrollView.setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET);
fillData();
Button save = (Button) findViewById(R.id.entry_save);
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
Button cancel = (Button) findViewById(R.id.entry_cancel);
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0, MENU_PASS, 0, R.string.menu_show_password);
menu.findItem(MENU_PASS).setIcon(android.R.drawable.ic_menu_view);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch ( item.getItemId() ) {
case MENU_PASS:
if ( mShowPassword ) {
item.setTitle(R.string.menu_hide_password);
mShowPassword = false;
} else {
item.setTitle(R.string.menu_show_password);
mShowPassword = true;
}
setPasswordStyle();
return true;
}
return super.onOptionsItemSelected(item);
}
private void setPasswordStyle() {
TextView password = (TextView) findViewById(R.id.entry_password);
TextView confpassword = (TextView) findViewById(R.id.entry_confpassword);
if ( mShowPassword ) {
password.setTransformationMethod(null);
confpassword.setTransformationMethod(null);
} else {
PasswordTransformationMethod ptm = PasswordTransformationMethod.getInstance();
password.setTransformationMethod(ptm);
confpassword.setTransformationMethod(ptm);
}
}
private void fillData() {
populateText(R.id.entry_title, mEntry.title);
populateText(R.id.entry_user_name, mEntry.username);
populateText(R.id.entry_url, mEntry.url);
String password = new String(mEntry.getPassword());
populateText(R.id.entry_password, password);
populateText(R.id.entry_confpassword, password);
setPasswordStyle();
populateText(R.id.entry_comment, mEntry.additional);
TextView comment = (TextView)findViewById(R.id.entry_comment);
comment.setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET);
comment.setMovementMethod(new ScrollingMovementMethod());
}
private void populateText(int viewId, String text) {
TextView tv = (TextView) findViewById(viewId);
tv.setText(text);
}
}