package de.fun2code.android.piratebox.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import de.fun2code.android.piratebox.Constants;
import de.fun2code.android.piratebox.PirateBoxService;
import de.fun2code.android.piratebox.R;
import de.fun2code.android.piratebox.handler.ConnectionCountHandler;
import de.fun2code.android.piratebox.util.PirateUtil;
/**
* This BrascastReceiver returns information of the current PirateBox state
* aus broadcast
*
* To request status broadcast an intent with action
* {@code de.fun2code.android.piratebox.broadcast.intent.STATUS_REQUEST} ant
* the receiver will respond with a resulting broadcast with action
* {@code de.fun2code.android.piratebox.broadcast.intent.STATUS_RESULT}
*
* The result broadcast will have the following extras:
* <dl>
* <dt>SERVER_STATE<dt>
* <dd>boolean value: {@code true} if the server is running, otherwise {@code false}</dd>
* <dt>UPLOAD_NUMBER<dt>
* <dd>int value: number of uploaded files</dd>
* <dt>SHOUT_NUMBER<dt>
* <dd>int value: number of shout/chat messages</dd>
* <dt>UPLOAD_DIR<dt>
* <dd>String value: upload directory location</dd>
* <dt>SHOUT_DIR<dt>
* <dd>String value: shout/chat directory location</dd>
* </dl>
*
*
* @author joschi
*
*/
public class StatusRequestReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// If status request
if (intent != null
&& intent.getAction().equals(Constants.BROADCAST_INTENT_STATUS_REQUEST)) {
Intent resultIntent = new Intent(Constants.BROADCAST_INTENT_STATUS_RESULT);
resultIntent.putExtra(Constants.INTENT_SERVER_EXTRA_STATE,
PirateBoxService.isRunning());
resultIntent.putExtra(Constants.INTENT_UPLOAD_EXTRA_NUMBER,
PirateUtil.calculateUploads(context));
resultIntent.putExtra(Constants.INTENT_SHOUT_EXTRA_NUMBER,
PirateUtil.calculateMessages(context));
resultIntent.putExtra(Constants.INTENT_CONNECTION_EXTRA_NUMBER,
ConnectionCountHandler.getConnectionCount());
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
String storageDir = preferences.getString(
Constants.PREF_STORAGE_DIR, context.getResources()
.getString(R.string.pref_storage_dir_default));
resultIntent.putExtra(Constants.INTENT_UPLOAD_EXTRA_DIR, storageDir
+ "/uploads");
resultIntent.putExtra(Constants.INTENT_SHOUT_EXTRA_DIR, storageDir
+ "/chat");
context.sendBroadcast(resultIntent);
}
}
}