Skip to content
This repository has been archived by the owner on Nov 12, 2019. It is now read-only.

Commit

Permalink
Fix: Widget now says "status unknown" on JSON parse exceptions and ne…
Browse files Browse the repository at this point in the history
…twork IO exceptions
  • Loading branch information
hellfyre committed Oct 25, 2013
1 parent 7950dde commit 54d83f9
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 17 deletions.
4 changes: 2 additions & 2 deletions src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="org.stratum0.statuswidget"
android:versionCode="9"
android:versionName="1.2.0" xmlns:android="http://schemas.android.com/apk/res/android">
android:versionCode="10"
android:versionName="1.2.1" xmlns:android="http://schemas.android.com/apk/res/android">

<uses-sdk android:minSdkVersion="11"
android:targetSdkVersion="11"
Expand Down
20 changes: 14 additions & 6 deletions src/main/java/org/stratum0/statuswidget/SpaceStatus.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,31 @@
* Created by tsuro on 9/1/13.
*/
public class SpaceStatus {
public enum Status {OPEN, CLOSED, UNKNOWN}
private static final SpaceStatus instance = new SpaceStatus();

private boolean isOpen;
private Status status;
private Calendar since;
private Calendar lastUpdated;
private String openedBy;
private long upTimeHours;
private long upTimeMins;

private SpaceStatus() {}
private SpaceStatus() {
status = Status.UNKNOWN;
since = Calendar.getInstance();
lastUpdated = Calendar.getInstance();
openedBy = "";
upTimeHours = 0;
upTimeMins = 0;
}

public static SpaceStatus getInstance() {
return instance;
}

public boolean isOpen() {
return isOpen;
public Status getStatus() {
return status;
}

public Calendar getSince() {
Expand All @@ -49,8 +57,8 @@ public String getLastUpdatedString() {
return String.format("%02d:%02d", lastUpdated.get(Calendar.HOUR_OF_DAY), lastUpdated.get(Calendar.MINUTE));
}

public void update(boolean isOpen, String openedBy, Calendar openSince, Calendar lastUpdated) {
this.isOpen = isOpen;
public void update(Status status, String openedBy, Calendar openSince, Calendar lastUpdated) {
this.status = status;
this.openedBy = openedBy;
this.since = openSince;
this.lastUpdated = lastUpdated;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ protected Void doInBackground(Void... voids) {

Calendar now = GregorianCalendar.getInstance();
String result = "";
SpaceStatus.Status isOpen = SpaceStatus.Status.UNKNOWN;

DefaultHttpClient client = new DefaultHttpClient();
try {
Expand All @@ -64,12 +65,13 @@ protected Void doInBackground(Void... voids) {
Calendar since = GregorianCalendar.getInstance();
since.setTime(f.parse(uptimeString));

Log.d(TAG, "UpdateTask: Open? " + status.isOpen());
Log.d(TAG, "UpdateTask: Open? " + status.getStatus());
Log.d(TAG, "UpdateTask: Opened by: " + status.getOpenedBy());
Log.d(TAG, "UpdateTask: Open since: " + status.getSince());

isOpen = jsonObject.getBoolean("isOpen") ? SpaceStatus.Status.OPEN : SpaceStatus.Status.CLOSED;
synchronized (this) {
status.update(jsonObject.getBoolean("isOpen"), jsonObject.getString("openedBy"), since, now);
status.update(isOpen, jsonObject.getString("openedBy"), since, now);
}

} catch (JSONException e) {
Expand Down
14 changes: 8 additions & 6 deletions src/main/java/org/stratum0/statuswidget/StatusActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
Expand Down Expand Up @@ -56,7 +55,7 @@ public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {}

@Override
public void afterTextChanged(Editable editable) {
if(status.isOpen()) {
if(status.getStatus() == SpaceStatus.Status.OPEN) {
inheritButton.setEnabled(!nameBox.getText().toString().equals(status.getOpenedBy()));
}
SharedPreferences.Editor editor = prefs.edit();
Expand Down Expand Up @@ -106,16 +105,19 @@ public void onPreSpaceStatusUpdate(Context context) {

@Override
public void onPostSpaceStatusUpdate(Context context) {
openCloseButton.setEnabled(true);
openCloseButton.setChecked(status.isOpen());
openCloseButton.setEnabled(status.getStatus() != SpaceStatus.Status.UNKNOWN);
openCloseButton.setChecked(status.getStatus() == SpaceStatus.Status.OPEN);
if(!nameBox.getText().toString().equals(status.getOpenedBy())) {
inheritButton.setEnabled(status.isOpen());
inheritButton.setEnabled(status.getStatus() == SpaceStatus.Status.OPEN);
}

if(status.isOpen()) {
if(status.getStatus() == SpaceStatus.Status.OPEN) {
SimpleDateFormat isodate = new SimpleDateFormat("yyyy-MM-dd HH:mm");
currentStatus.setText(String.format("%s (%s)", isodate.format(status.getSince().getTime()), status.getOpenedBy()));
}
else if (status.getStatus() == SpaceStatus.Status.UNKNOWN) {
currentStatus.setText("Status unknown");
}
else {
currentStatus.setText("");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,11 +140,15 @@ public void onPostSpaceStatusUpdate(Context context) {
String upTimeText = String.format("%02d %02d", status.getUpTimeHours(), status.getUpTimeMins());
String lastUpdateText = String.format("%s:\n%02d:%02d", context.getText(R.string.currentTime), status.getLastUpdated().get(Calendar.HOUR_OF_DAY), status.getLastUpdated().get(Calendar.MINUTE));

if (status.isOpen()) {
if (status.getStatus() == SpaceStatus.Status.OPEN) {
currentImage = R.drawable.stratum0_open;
//dismiss previous useractionrequest
notificationManager.cancel(nID);
}
else if (status.getStatus() == SpaceStatus.Status.UNKNOWN) {
currentImage = R.drawable.stratum0_unknown;
notificationManager.cancel(nID);
}
else {
//check if connected to Stratum0 while space status is closed
if (wifiInfo.getSSID() != null && (wifiInfo.getSSID().equals("Stratum0") || wifiInfo.getSSID().equals("Stratum0_5g"))) {
Expand Down

0 comments on commit 54d83f9

Please sign in to comment.