diff --git a/app/src/main/java/i2p/bote/android/service/BoteService.java b/app/src/main/java/i2p/bote/android/service/BoteService.java
index 37dea5a..d187856 100644
--- a/app/src/main/java/i2p/bote/android/service/BoteService.java
+++ b/app/src/main/java/i2p/bote/android/service/BoteService.java
@@ -21,6 +21,8 @@ import i2p.bote.email.Email;
import i2p.bote.fileencryption.PasswordException;
import i2p.bote.folder.EmailFolder;
import i2p.bote.folder.NewEmailListener;
+import i2p.bote.network.NetworkStatusListener;
+
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
@@ -33,12 +35,13 @@ import android.os.IBinder;
import android.os.RemoteException;
import android.support.v4.app.NotificationCompat;
-public class BoteService extends Service implements NewEmailListener {
+public class BoteService extends Service implements NetworkStatusListener, NewEmailListener {
public static final String ROUTER_CHOICE = "router_choice";
public static final int NOTIF_ID_SERVICE = 8073;
public static final int NOTIF_ID_NEW_EMAIL = 80739047;
RouterChoice mRouterChoice;
+ NotificationCompat.Builder mStatusBuilder;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
@@ -58,9 +61,8 @@ public class BoteService extends Service implements NewEmailListener {
} else if (mRouterChoice == RouterChoice.REMOTE)
bote.connectNow();
- NotificationCompat.Builder b = new NotificationCompat.Builder(this)
+ mStatusBuilder = new NotificationCompat.Builder(this)
.setContentTitle(getResources().getString(R.string.app_name))
- .setContentText(getResources().getString(R.string.connected_to_network))
.setSmallIcon(R.drawable.ic_launcher)
.setOngoing(true)
.setOnlyAlertOnce(true);
@@ -68,9 +70,13 @@ public class BoteService extends Service implements NewEmailListener {
Intent ni = new Intent(this, EmailListActivity.class);
ni.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pi = PendingIntent.getActivity(this, 0, ni, PendingIntent.FLAG_UPDATE_CURRENT);
- b.setContentIntent(pi);
+ mStatusBuilder.setContentIntent(pi);
- startForeground(NOTIF_ID_SERVICE, b.build());
+ updateServiceNotifText();
+
+ startForeground(NOTIF_ID_SERVICE, mStatusBuilder.build());
+
+ bote.addNetworkStatusListener(this);
return START_REDELIVER_INTENT;
}
@@ -162,6 +168,39 @@ public class BoteService extends Service implements NewEmailListener {
};
+ // NetworkStatusListener
+
+ @Override
+ public void networkStatusChanged() {
+ updateServiceNotifText();
+
+ NotificationManager nm = (NotificationManager) getSystemService(
+ Context.NOTIFICATION_SERVICE);
+ nm.notify(NOTIF_ID_SERVICE, mStatusBuilder.build());
+ }
+
+ private void updateServiceNotifText() {
+ String statusText;
+ switch (I2PBote.getInstance().getNetworkStatus()) {
+ case DELAY:
+ statusText = getResources().getString(R.string.waiting_for_network);
+ break;
+ case CONNECTING:
+ statusText = getResources().getString(R.string.connecting_to_network);
+ break;
+ case CONNECTED:
+ statusText = getResources().getString(R.string.connected_to_network);
+ break;
+ case ERROR:
+ statusText = getResources().getString(R.string.error);
+ break;
+ case NOT_STARTED: // Should not happen
+ default:
+ statusText = getResources().getString(R.string.not_started);
+ }
+ mStatusBuilder.setContentText(statusText);
+ }
+
// NewEmailListener
@Override
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a4b5bed..249b1c3 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -66,7 +66,9 @@
Error
Folder is empty
Folder does not exist
- Connected to the I2P network
+ Waiting on I2P
+ Connecting to the Bote network
+ Connected to the Bote network
- One new email