Skip to content
This repository has been archived by the owner on Apr 23, 2023. It is now read-only.

Commit

Permalink
Status implements Parcelable (#155)
Browse files Browse the repository at this point in the history
  • Loading branch information
sarahsnow1 authored and ecgreb committed Jan 13, 2017
1 parent 560ce0a commit 27cd5af
Show file tree
Hide file tree
Showing 4 changed files with 88 additions and 3 deletions.
33 changes: 32 additions & 1 deletion lost/src/main/java/com/mapzen/android/lost/api/Status.java
Expand Up @@ -5,11 +5,13 @@
import android.app.Activity;
import android.app.PendingIntent;
import android.content.IntentSender;
import android.os.Parcel;
import android.os.Parcelable;

/**
* Represents the result of a {@link LocationServices} API call.
*/
public class Status implements Result {
public class Status implements Result, Parcelable {

public static final int SUCCESS = 0;
public static final int RESOLUTION_REQUIRED = 6;
Expand Down Expand Up @@ -62,6 +64,23 @@ public Status(int statusCode, DialogDisplayer dialogDisplayer, PendingIntent pen
this.dialogDisplayer = dialogDisplayer;
}

protected Status(Parcel in) {
statusCode = in.readInt();
statusMessage = in.readString();
pendingIntent = in.readParcelable(PendingIntent.class.getClassLoader());
dialogDisplayer = in.readParcelable(DialogDisplayer.class.getClassLoader());
}

public static final Creator<Status> CREATOR = new Creator<Status>() {
@Override public Status createFromParcel(Parcel in) {
return new Status(in);
}

@Override public Status[] newArray(int size) {
return new Status[size];
}
};

/**
* If the status code is {@link Status#RESOLUTION_REQUIRED}, then this method can be called to
* start the resolution. For example, it will launch the Settings {@link Activity} so that the
Expand Down Expand Up @@ -141,4 +160,16 @@ public PendingIntent getResolution() {
@Override public Status getStatus() {
return this;
}


@Override public int describeContents() {
return 0;
}

@Override public void writeToParcel(Parcel parcel, int i) {
parcel.writeInt(statusCode);
parcel.writeString(statusMessage);
parcel.writeParcelable(pendingIntent, i);
parcel.writeParcelable(dialogDisplayer, i);
}
}
Expand Up @@ -2,12 +2,13 @@

import android.app.Activity;
import android.app.PendingIntent;
import android.os.Parcelable;

/**
* Interface for displaying a dialog in an {@link android.app.Activity} for a given code and
* {@link android.app.PendingIntent}.
*/
public interface DialogDisplayer {
public interface DialogDisplayer extends Parcelable {
/**
* Implementing class should display a dialog in the given {@link android.app.Activity} passing
* the request and {@link android.app.PendingIntent}.
Expand Down
Expand Up @@ -4,15 +4,35 @@
import android.app.PendingIntent;
import android.content.DialogInterface;
import android.content.IntentSender;
import android.os.Parcel;
import android.os.Parcelable;

/**
* Handles displaying a dialog to the user so that they can optionally update their device location
* settings.
*/
public class SettingsDialogDisplayer implements DialogDisplayer {
public class SettingsDialogDisplayer implements DialogDisplayer, Parcelable {

private static final String SETTINGS_DIALOG_TAG = "settings-dialog";

public SettingsDialogDisplayer() {

}

protected SettingsDialogDisplayer(Parcel in) {
}

public static final Creator<SettingsDialogDisplayer> CREATOR =
new Creator<SettingsDialogDisplayer>() {
@Override public SettingsDialogDisplayer createFromParcel(Parcel in) {
return new SettingsDialogDisplayer(in);
}

@Override public SettingsDialogDisplayer[] newArray(int size) {
return new SettingsDialogDisplayer[size];
}
};

@Override public void displayDialog(final Activity activity, final int requestCode,
final PendingIntent pendingIntent) {
SettingsDialogFragment fragment = new SettingsDialogFragment();
Expand All @@ -28,4 +48,11 @@ public class SettingsDialogDisplayer implements DialogDisplayer {
});
fragment.show(activity.getFragmentManager(), SETTINGS_DIALOG_TAG);
}

@Override public int describeContents() {
return 0;
}

@Override public void writeToParcel(Parcel parcel, int i) {
}
}
Expand Up @@ -2,11 +2,29 @@

import android.app.Activity;
import android.app.PendingIntent;
import android.os.Parcel;

public class TestSettingsDialogDisplayer implements DialogDisplayer {

boolean displayed = false;

public TestSettingsDialogDisplayer() {
}

protected TestSettingsDialogDisplayer(Parcel in) {
}

public static final Creator<TestSettingsDialogDisplayer> CREATOR =
new Creator<TestSettingsDialogDisplayer>() {
@Override public TestSettingsDialogDisplayer createFromParcel(Parcel in) {
return new TestSettingsDialogDisplayer(in);
}

@Override public TestSettingsDialogDisplayer[] newArray(int size) {
return new TestSettingsDialogDisplayer[size];
}
};

@Override
public void displayDialog(Activity activity, int requestCode, PendingIntent pendingIntent) {
displayed = true;
Expand All @@ -15,4 +33,12 @@ public void displayDialog(Activity activity, int requestCode, PendingIntent pend
public boolean isDisplayed() {
return displayed;
}

@Override public int describeContents() {
return 0;
}

@Override public void writeToParcel(Parcel parcel, int i) {

}
}

0 comments on commit 27cd5af

Please sign in to comment.