# HG changeset patch # User marseille@marseille-desktop # Date 1245351072 -7200 # Node ID 11f8de688fcb3e218b14623099f1282293850bad # Parent a81519fc402420df3d3fb70ecab62c4ea7ce6af5 Suppression beemapplication dans la notification changestatus. diff -r a81519fc4024 -r 11f8de688fcb src/com/beem/project/beem/BeemApplication.java --- a/src/com/beem/project/beem/BeemApplication.java Thu Jun 18 20:22:56 2009 +0200 +++ b/src/com/beem/project/beem/BeemApplication.java Thu Jun 18 20:51:12 2009 +0200 @@ -30,111 +30,7 @@ */ public class BeemApplication extends Application { - /** - * Connection listener use to hide the progress dialog. - * - * @author darisk - */ - private class ConnectionListener extends IBeemConnectionListener.Stub { - - /** - * Constructor. - */ - public ConnectionListener() { - } - - /** - * {@inheritDoc} - */ - @Override - public void connectionClosed() throws RemoteException { - Log.e(TAG, "Connection Close"); - } - - /** - * {@inheritDoc} - */ - @Override - public void connectionClosedOnError() throws RemoteException { - Log.e(TAG, "ConnectionClosedOnError"); - // TODO afficher une notification et reafficher le progress dialog - } - - @Override - public void connectionFailed(String errorMsg) throws RemoteException { - Log.i(TAG, "Connection Failed"); - ConnectionRunnable cRun = new ConnectionRunnable(errorMsg); - mBeemApp.mActivity.runOnUiThread(cRun); - } - - /** - * {@inheritDoc} - */ - @Override - public void onConnect() throws RemoteException { - // TODO Auto-generated method stub - // TODO recuperer les informations de status dans les preferences - mFacade.changeStatus(Status.CONTACT_STATUS_AVAILABLE, null); - synchronized (mQueue) { - for (Message msg : mQueue) { - msg.sendToTarget(); - } - mQueue.clear(); - } - } - - /** - * {@inheritDoc} - */ - @Override - public void reconnectingIn(int seconds) throws RemoteException { - } - - /** - * {@inheritDoc} - */ - @Override - public void reconnectionFailed() throws RemoteException { - } - - /** - * {@inheritDoc} - */ - @Override - public void reconnectionSuccessful() throws RemoteException { - } - - } - - private class ConnectionRunnable implements Runnable { - - private String mErrorMsg; - - public ConnectionRunnable(String string) { - this.mErrorMsg = string; - } - - /** - * @return the mErrorMsg - */ - public String getMErrorMsg() { - return mErrorMsg; - } - - @Override - public void run() { - } - - /** - * @param mErrorMsg - * the mErrorMsg to set - */ - public void setMErrorMsg(String mErrorMsg) { - this.mErrorMsg = mErrorMsg; - } - - } - + private static final Intent SERVICE_INTENT = new Intent(); private static BeemApplication mBeemApp; static { @@ -282,4 +178,110 @@ } } + /** + * Connection listener use to hide the progress dialog. + * + * @author darisk + */ + private class ConnectionListener extends IBeemConnectionListener.Stub { + + /** + * Constructor. + */ + public ConnectionListener() { + } + + /** + * {@inheritDoc} + */ + @Override + public void connectionClosed() throws RemoteException { + Log.e(TAG, "Connection Close"); + } + + /** + * {@inheritDoc} + */ + @Override + public void connectionClosedOnError() throws RemoteException { + Log.e(TAG, "ConnectionClosedOnError"); + // TODO afficher une notification et reafficher le progress dialog + } + + @Override + public void connectionFailed(String errorMsg) throws RemoteException { + Log.i(TAG, "Connection Failed"); + ConnectionRunnable cRun = new ConnectionRunnable(errorMsg); + mBeemApp.mActivity.runOnUiThread(cRun); + } + + /** + * {@inheritDoc} + */ + @Override + public void onConnect() throws RemoteException { + // TODO Auto-generated method stub + // TODO recuperer les informations de status dans les preferences + mFacade.changeStatus(Status.CONTACT_STATUS_AVAILABLE, null); + synchronized (mQueue) { + for (Message msg : mQueue) { + msg.sendToTarget(); + } + mQueue.clear(); + } + } + + /** + * {@inheritDoc} + */ + @Override + public void reconnectingIn(int seconds) throws RemoteException { + } + + /** + * {@inheritDoc} + */ + @Override + public void reconnectionFailed() throws RemoteException { + } + + /** + * {@inheritDoc} + */ + @Override + public void reconnectionSuccessful() throws RemoteException { + } + + } + + private class ConnectionRunnable implements Runnable { + + private String mErrorMsg; + + public ConnectionRunnable(String string) { + this.mErrorMsg = string; + } + + /** + * @return the mErrorMsg + */ + public String getMErrorMsg() { + return mErrorMsg; + } + + @Override + public void run() { + } + + /** + * @param mErrorMsg + * the mErrorMsg to set + */ + public void setMErrorMsg(String mErrorMsg) { + this.mErrorMsg = mErrorMsg; + } + + } + + } diff -r a81519fc4024 -r 11f8de688fcb src/com/beem/project/beem/ui/ChangeStatus.java --- a/src/com/beem/project/beem/ui/ChangeStatus.java Thu Jun 18 20:22:56 2009 +0200 +++ b/src/com/beem/project/beem/ui/ChangeStatus.java Thu Jun 18 20:51:12 2009 +0200 @@ -1,13 +1,14 @@ package com.beem.project.beem.ui; import android.app.Activity; +import android.content.ComponentName; import android.content.Intent; +import android.content.ServiceConnection; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Bundle; -import android.os.Handler; +import android.os.IBinder; import android.os.RemoteException; -import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.ArrayAdapter; @@ -16,7 +17,6 @@ import android.widget.TextView; import android.widget.Toast; -import com.beem.project.beem.BeemApplication; import com.beem.project.beem.BeemService; import com.beem.project.beem.R; import com.beem.project.beem.service.aidl.IXmppFacade; @@ -24,80 +24,26 @@ public class ChangeStatus extends Activity { - private TextView mStatusText; - private Button mOk; - private Button mClear; - private Handler mHandler; - private BeemApplication mBeemApplication; - private IXmppFacade mService = null; - private Spinner mSpinner; - private static final String[] STATUS = { "Available for chat", "Available", "Busy", "Away", - "Unavailable", "Disconnected" }; - private static final int DISCONNECTED_IDX = 5; - private static final int AVAILABLE_FOR_CHAT_IDX = 0; - private static final int AVAILABLE_IDX = 1; - private static final int BUSY_IDX = 2; - private static final int AWAY_IDX = 3; - private static final int UNAVAILABLE_IDX = 4; - private SharedPreferences mSettings; - private ArrayAdapter mAdapter; - private Toast mToast; - private static Integer nb = 0; - - private final OnClickListener mOnClickOk = new OnClickListener() { - - public void onClick(View v) { - if (v == mOk) { - if (textHasChanged() || statusHasChanged()) { - String msg = mStatusText.getText().toString(); - int status = getStatusForService((String) mSpinner - .getSelectedItem()); - Editor edit = mSettings.edit(); - edit - .putString( - getString(R.string.PreferenceStatusText), - msg); - edit.putInt( - getString(R.string.PreferenceStatus), - mSpinner.getSelectedItemPosition()); - edit.commit(); - if (status == Status.CONTACT_STATUS_DISCONNECT) { - stopService(new Intent(ChangeStatus.this, - BeemService.class)); - } else { - try { - mService.changeStatus(status, msg - .toString()); - } catch (RemoteException e) { - // TODO - // Auto-generated - // catch block - e.printStackTrace(); - } - mToast.show(); - } - } - ChangeStatus.this.finish(); - } else if (v == mClear) { - mStatusText.setText(null); - } - - } - - private boolean statusHasChanged() { - return (mSettings.getInt( - getString(R.string.PreferenceStatus), 0) != mSpinner - .getSelectedItemPosition()); - } - - private boolean textHasChanged() { - return (!mStatusText - .getText() - .toString() - .equals( - getPreferenceString(R.string.PreferenceStatusText))); - } - }; + private TextView mStatusText; + private Toast mToast; + private Button mOk; + private Button mClear; + private Spinner mSpinner; + + private static final String[] STATUS = { "Available for chat", "Available", "Busy", "Away", "Unavailable", + "Disconnected" }; + private static final int DISCONNECTED_IDX = 5; + private static final int AVAILABLE_FOR_CHAT_IDX = 0; + private static final int AVAILABLE_IDX = 1; + private static final int BUSY_IDX = 2; + private static final int AWAY_IDX = 3; + private static final int UNAVAILABLE_IDX = 4; + + private SharedPreferences mSettings; + private ArrayAdapter mAdapter; + private IXmppFacade xmppFacade = null; + private final ServiceConnection mServConn = new BeemServiceConnection(); + private final OnClickListener mOnClickOk = new MyOnClickListener(); private int getPreferenceStatusIndex() { return mSettings.getInt(getString(R.string.PreferenceStatus), 0); @@ -113,21 +59,21 @@ String str = ChangeStatus.STATUS[i]; if (str.equals(item)) { switch (i) { - case ChangeStatus.DISCONNECTED_IDX: - return Status.CONTACT_STATUS_DISCONNECT; - case ChangeStatus.AVAILABLE_FOR_CHAT_IDX: - return Status.CONTACT_STATUS_AVAILABLE_FOR_CHAT; - case ChangeStatus.AVAILABLE_IDX: - return Status.CONTACT_STATUS_AVAILABLE; - case ChangeStatus.AWAY_IDX: - return Status.CONTACT_STATUS_AWAY; - case ChangeStatus.BUSY_IDX: - return Status.CONTACT_STATUS_BUSY; - case ChangeStatus.UNAVAILABLE_IDX: - return Status.CONTACT_STATUS_UNAVAILABLE; - default: - res = Status.CONTACT_STATUS_AVAILABLE; - break; + case ChangeStatus.DISCONNECTED_IDX: + return Status.CONTACT_STATUS_DISCONNECT; + case ChangeStatus.AVAILABLE_FOR_CHAT_IDX: + return Status.CONTACT_STATUS_AVAILABLE_FOR_CHAT; + case ChangeStatus.AVAILABLE_IDX: + return Status.CONTACT_STATUS_AVAILABLE; + case ChangeStatus.AWAY_IDX: + return Status.CONTACT_STATUS_AWAY; + case ChangeStatus.BUSY_IDX: + return Status.CONTACT_STATUS_BUSY; + case ChangeStatus.UNAVAILABLE_IDX: + return Status.CONTACT_STATUS_UNAVAILABLE; + default: + res = Status.CONTACT_STATUS_AVAILABLE; + break; } } } @@ -138,12 +84,6 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - nb++; - Log.i("nb de oncreate changestatus", nb.toString()); - // Beem Application specific - mHandler = new Handler(); - mBeemApplication = BeemApplication.getApplication(this); - setContentView(R.layout.changestatus); mStatusText = (TextView) findViewById(R.id.ChangeStatusText); mOk = (Button) findViewById(R.id.ChangeStatusOk); @@ -163,25 +103,13 @@ @Override protected void onDestroy() { super.onDestroy(); - mBeemApplication.unbindBeemService(); + unbindService(mServConn); } @Override protected void onResume() { super.onResume(); - mBeemApplication.callWhenConnectedToServer(mHandler, new Runnable() { - - @Override - public void run() { - mService = mBeemApplication.getXmppFacade(); - } - }); - } - - @Override - protected void onStart() { - super.onStart(); - mBeemApplication.startBeemService(); + bindService(new Intent(this, BeemService.class), mServConn, BIND_AUTO_CREATE); } private void showSettings() { @@ -189,4 +117,57 @@ mSpinner.setSelection(getPreferenceStatusIndex()); } + private class BeemServiceConnection implements ServiceConnection { + + @Override + public void onServiceConnected(ComponentName name, IBinder service) { + xmppFacade = IXmppFacade.Stub.asInterface(service); + } + + @Override + public void onServiceDisconnected(ComponentName name) { + xmppFacade = null; + } + } + + private class MyOnClickListener implements OnClickListener { + + @Override + public void onClick(View v) { + if (v == mOk) { + if (textHasChanged() || statusHasChanged()) { + String msg = mStatusText.getText().toString(); + int status = getStatusForService((String) mSpinner.getSelectedItem()); + Editor edit = mSettings.edit(); + edit.putString(getString(R.string.PreferenceStatusText), msg); + edit.putInt(getString(R.string.PreferenceStatus), mSpinner.getSelectedItemPosition()); + edit.commit(); + if (status == Status.CONTACT_STATUS_DISCONNECT) { + stopService(new Intent(ChangeStatus.this, BeemService.class)); + } else { + try { + xmppFacade.changeStatus(status, msg.toString()); + } catch (RemoteException e) { + // TODO + // Auto-generated + // catch block + e.printStackTrace(); + } + mToast.show(); + } + } + ChangeStatus.this.finish(); + } else if (v == mClear) { + mStatusText.setText(null); + } + } + private boolean statusHasChanged() { + return (mSettings.getInt(getString(R.string.PreferenceStatus), 0) != mSpinner.getSelectedItemPosition()); + } + + private boolean textHasChanged() { + return (!mStatusText.getText().toString().equals(getPreferenceString(R.string.PreferenceStatusText))); + } + } + }