summaryrefslogtreecommitdiff
path: root/demoapp/app/src/main/java/com/google/phonenumbers/demoapp/phonenumbers/PhoneNumberInApp.java
diff options
context:
space:
mode:
Diffstat (limited to 'demoapp/app/src/main/java/com/google/phonenumbers/demoapp/phonenumbers/PhoneNumberInApp.java')
-rw-r--r--demoapp/app/src/main/java/com/google/phonenumbers/demoapp/phonenumbers/PhoneNumberInApp.java96
1 files changed, 96 insertions, 0 deletions
diff --git a/demoapp/app/src/main/java/com/google/phonenumbers/demoapp/phonenumbers/PhoneNumberInApp.java b/demoapp/app/src/main/java/com/google/phonenumbers/demoapp/phonenumbers/PhoneNumberInApp.java
new file mode 100644
index 00000000..6e35d982
--- /dev/null
+++ b/demoapp/app/src/main/java/com/google/phonenumbers/demoapp/phonenumbers/PhoneNumberInApp.java
@@ -0,0 +1,96 @@
+package com.google.phonenumbers.demoapp.phonenumbers;
+
+import java.io.Serializable;
+
+/**
+ * Represents a phone number and the conversion of it in the app (between reading from and writing
+ * to contacts).
+ */
+public class PhoneNumberInApp implements Serializable, Comparable<PhoneNumberInApp> {
+
+ /** ID to identify the phone number in the device's contacts. */
+ private final String id;
+ /** Display name of the contact the phone number belongs to. */
+ private final String contactName;
+
+ /** Phone number as originally in contacts. */
+ private final String originalPhoneNumber;
+ /**
+ * The in E.164 formatted {@link PhoneNumberInApp#originalPhoneNumber} (e.g. {@code +41446681800})
+ * if formattable, else {@code null}.
+ */
+ private String formattedPhoneNumber = null;
+
+ private FormattingState formattingState = FormattingState.PENDING;
+
+ /**
+ * Equal to the value of the checkbox in the UI. Only if {@code true} the phone number should be
+ * updated in the contacts.
+ */
+ private boolean shouldContactBeUpdated = false;
+
+ public PhoneNumberInApp(String id, String contactName, String originalPhoneNumber) {
+ this.id = id;
+ this.contactName = contactName;
+ this.originalPhoneNumber = originalPhoneNumber;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public String getContactName() {
+ return contactName;
+ }
+
+ public String getOriginalPhoneNumber() {
+ return originalPhoneNumber;
+ }
+
+ public String getFormattedPhoneNumber() {
+ return formattedPhoneNumber;
+ }
+
+ public void setFormattedPhoneNumber(String formattedPhoneNumber) {
+ this.formattedPhoneNumber = formattedPhoneNumber;
+ }
+
+ public FormattingState getFormattingState() {
+ return formattingState;
+ }
+
+ public void setFormattingState(FormattingState formattingState) {
+ this.formattingState = formattingState;
+ }
+
+ public boolean shouldContactBeUpdated() {
+ return shouldContactBeUpdated;
+ }
+
+ public void setShouldContactBeUpdated(boolean shouldContactBeUpdated) {
+ this.shouldContactBeUpdated = shouldContactBeUpdated;
+ }
+
+ @Override
+ public int compareTo(PhoneNumberInApp o) {
+ return getContactName().compareTo(o.getContactName());
+ }
+
+ /**
+ * Represents the state the formatting of {@link PhoneNumberInApp#originalPhoneNumber} can be at.
+ */
+ public enum FormattingState {
+ /** Used before the formatting is tried/done. */
+ PENDING,
+ /** Formatting completed to {@link PhoneNumberInApp#formattedPhoneNumber} without errors. */
+ COMPLETED,
+ /** Error while parsing the {@link PhoneNumberInApp#originalPhoneNumber}. */
+ PARSING_ERROR,
+ /** {@link PhoneNumberInApp#originalPhoneNumber} is a short number. */
+ NUMBER_IS_SHORT_NUMBER,
+ /** {@link PhoneNumberInApp#originalPhoneNumber} is not a valid number. */
+ NUMBER_IS_NOT_VALID,
+ /** {@link PhoneNumberInApp#originalPhoneNumber} is already in E.164 format. */
+ NUMBER_IS_ALREADY_IN_E164
+ }
+}