Skip to content

Commit fcf1f02

Browse files
committed
Added a URL field in the password entries
1 parent 4def17c commit fcf1f02

File tree

6 files changed

+79
-34
lines changed

6 files changed

+79
-34
lines changed

java/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<groupId>org.astonbitecode.rustkeylock</groupId>
66
<artifactId>rust-keylock-android</artifactId>
7-
<version>0.5.0</version>
7+
<version>0.6.0</version>
88
<packaging>apk</packaging>
99

1010
<name>rust-keylock-android</name>

java/res/layout/fragment_show_entry.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,20 @@
4444
android:layout_height="wrap_content"
4545
android:inputType="text"/>
4646

47+
<TextView
48+
android:id="@+id/urlLabel"
49+
android:layout_width="wrap_content"
50+
android:layout_height="wrap_content"
51+
android:layout_marginTop="20sp"
52+
android:text="URL"
53+
android:textAppearance="?android:attr/textAppearanceSmall"/>
54+
55+
<EditText
56+
android:id="@+id/editUrl"
57+
android:layout_width="match_parent"
58+
android:layout_height="wrap_content"
59+
android:inputType="text"/>
60+
4761
<TextView
4862
android:id="@+id/userLabel"
4963
android:layout_width="wrap_content"

java/src/main/java/org/astonbitecode/rustkeylock/api/JavaEntry.java

Lines changed: 36 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -8,35 +8,40 @@
88

99
public class JavaEntry extends Structure {
1010

11-
public static class ByReference extends JavaEntry implements Structure.ByReference {
12-
}
13-
14-
public static class ByValue extends JavaEntry implements Structure.ByValue {
15-
}
16-
17-
public String name;
18-
public String user;
19-
public String pass;
20-
public String desc;
21-
22-
public String getName() {
23-
return name;
24-
}
25-
26-
public String getUser() {
27-
return user;
28-
}
29-
30-
public String getPass() {
31-
return pass;
32-
}
33-
34-
public String getDesc() {
35-
return desc;
36-
}
37-
38-
@Override
39-
protected List<String> getFieldOrder() {
40-
return asList("name", "user", "pass", "desc");
41-
}
11+
public static class ByReference extends JavaEntry implements Structure.ByReference {
12+
}
13+
14+
public static class ByValue extends JavaEntry implements Structure.ByValue {
15+
}
16+
17+
public String name;
18+
public String url;
19+
public String user;
20+
public String pass;
21+
public String desc;
22+
23+
public String getName() {
24+
return name;
25+
}
26+
27+
public String getUrl() {
28+
return url;
29+
}
30+
31+
public String getUser() {
32+
return user;
33+
}
34+
35+
public String getPass() {
36+
return pass;
37+
}
38+
39+
public String getDesc() {
40+
return desc;
41+
}
42+
43+
@Override
44+
protected List<String> getFieldOrder() {
45+
return asList("name", "url", "user", "pass", "desc");
46+
}
4247
}

java/src/main/java/org/astonbitecode/rustkeylock/fragments/ShowEntry.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,23 @@
1919
import android.widget.EditText;
2020
import android.widget.TextView;
2121

22+
import java.net.MalformedURLException;
23+
import java.net.URL;
24+
2225
public class ShowEntry extends Fragment implements OnClickListener, BackButtonHandler {
2326
private static final long serialVersionUID = 163106573370997557L;
2427
private final String TAG = getClass().getName();
2528
private transient JavaEntry entry;
2629
private String entryName;
30+
private String entryUrl;
2731
private String entryUser;
2832
private String entryPass;
2933
private String entryDesc;
3034
private int entryIndex;
3135
private boolean edit;
3236
private boolean delete;
3337
private transient EditText nameText;
38+
private transient EditText urlText;
3439
private transient EditText userText;
3540
private transient EditText passwordText;
3641
private transient EditText descriptionText;
@@ -47,6 +52,7 @@ public class ShowEntry extends Fragment implements OnClickListener, BackButtonHa
4752
public ShowEntry(JavaEntry entry, int entryIndex, boolean edit, boolean delete) {
4853
this.entry = entry;
4954
this.entryName = entry.getName();
55+
this.entryUrl = entry.getUrl();
5056
this.entryUser = entry.getUser();
5157
this.entryPass = entry.getPass();
5258
this.entryDesc = entry.getDesc();
@@ -79,6 +85,7 @@ public void onClick(View view) {
7985

8086
JavaEntry javaEntry = new JavaEntry();
8187
javaEntry.name = nameText.getText() != null ? nameText.getText().toString() : "";
88+
javaEntry.url = urlText.getText() != null ? urlText.getText().toString() : "";
8289
javaEntry.user = userText.getText() != null ? userText.getText().toString() : "";
8390
javaEntry.pass = passwordText.getText() != null ? passwordText.getText().toString() : "";
8491
javaEntry.desc = descriptionText.getText() != null ? descriptionText.getText().toString() : "";
@@ -96,6 +103,14 @@ public void onClick(View view) {
96103
passwordText.setError("Required field");
97104
errorsOccured = true;
98105
}
106+
if (!javaEntry.url.isEmpty()) {
107+
try {
108+
new URL(javaEntry.url);
109+
} catch (MalformedURLException mue) {
110+
urlText.setError("Invalid URL. Eg: https://my.com");
111+
errorsOccured = true;
112+
}
113+
}
99114
if (!errorsOccured) {
100115
if (entryIndex >= 0) {
101116
InterfaceWithRust.INSTANCE.replace_entry(javaEntry, entryIndex);
@@ -131,6 +146,10 @@ private void prepareUiElements(View v) {
131146
nameText.setText(entry.getName());
132147
nameText.setEnabled(edit);
133148
this.nameText = nameText;
149+
EditText urlText = (EditText) v.findViewById(R.id.editUrl);
150+
urlText.setText(entry.getUrl());
151+
urlText.setEnabled(edit);
152+
this.urlText = urlText;
134153
EditText userText = (EditText) v.findViewById(R.id.editUser);
135154
userText.setText(entry.getUser());
136155
userText.setEnabled(edit);
@@ -180,6 +199,7 @@ private void restore(Bundle state) {
180199
if (state != null) {
181200
this.entry = new JavaEntry();
182201
this.entry.name = this.entryName;
202+
this.entry.url = this.entryUrl;
183203
this.entry.user = this.entryUser;
184204
this.entry.pass = this.entryPass;
185205
this.entry.desc = this.entryDesc;

rust/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
[package]
22
name = "rustkeylockandroid"
3-
version = "0.5.0"
3+
version = "0.6.0"
44
authors = ["aston <astonbitecode@gmail.com>"]
55

66
[lib]
77
name = "rustkeylockandroid"
88
crate-type = ["cdylib"]
99

1010
[dependencies]
11-
rust_keylock = "0.5"
11+
rust_keylock = {git = "https://github.com/rust-keylock/rust-keylock-lib.git"}
1212
libc = "0.2"
1313
lazy_static = "0.2"
1414
log = "0.3"

rust/src/lib.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ lazy_static! {
3535
#[repr(C)]
3636
pub struct JavaEntry {
3737
name: *const c_char,
38+
url: *const c_char,
3839
user: *const c_char,
3940
pass: *const c_char,
4041
desc: *const c_char,
@@ -44,6 +45,7 @@ impl JavaEntry {
4445
fn new(entry: &Entry) -> JavaEntry {
4546
JavaEntry {
4647
name: to_java_string(entry.name.clone()),
48+
url: to_java_string(entry.url.clone()),
4749
user: to_java_string(entry.user.clone()),
4850
pass: to_java_string(entry.pass.clone()),
4951
desc: to_java_string(entry.desc.clone()),
@@ -53,6 +55,7 @@ impl JavaEntry {
5355
fn empty() -> JavaEntry {
5456
JavaEntry {
5557
name: to_java_string("".to_string()),
58+
url: to_java_string("".to_string()),
5659
user: to_java_string("".to_string()),
5760
pass: to_java_string("".to_string()),
5861
desc: to_java_string("".to_string()),
@@ -62,6 +65,7 @@ impl JavaEntry {
6265
fn with_nulls() -> JavaEntry {
6366
JavaEntry {
6467
name: to_java_string("null".to_string()),
68+
url: to_java_string("null".to_string()),
6569
user: to_java_string("null".to_string()),
6670
pass: to_java_string("null".to_string()),
6771
desc: to_java_string("null".to_string()),
@@ -296,6 +300,7 @@ pub extern "C" fn add_entry(java_entry: &JavaEntry) {
296300
TX.lock().unwrap().as_ref().unwrap().clone()
297301
};
298302
let entry = Entry::new(to_rust_string(java_entry.name),
303+
to_rust_string(java_entry.url),
299304
to_rust_string(java_entry.user),
300305
to_rust_string(java_entry.pass),
301306
to_rust_string(java_entry.desc));
@@ -312,6 +317,7 @@ pub extern "C" fn replace_entry(java_entry: &JavaEntry, index: i32) {
312317
TX.lock().unwrap().as_ref().unwrap().clone()
313318
};
314319
let entry = Entry::new(to_rust_string(java_entry.name),
320+
to_rust_string(java_entry.url),
315321
to_rust_string(java_entry.user),
316322
to_rust_string(java_entry.pass),
317323
to_rust_string(java_entry.desc));

0 commit comments

Comments
 (0)