package org.societies.android.platform.css.friends; import org.societies.android.api.comms.xmpp.VCardParcel; import org.societies.android.api.internal.cssmanager.IFriendsManager; import org.societies.android.platform.css.friends.FriendsManagerLocal.LocalFriendsManagerBinder; import org.societies.api.schema.css.directory.CssAdvertisementRecord; import android.os.Bundle; import android.os.IBinder; import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; public class AcceptFriendActivity extends Activity { private static final String EXTRA_CSS_VCARD = "org.societies.android.api.comms.xmpp.VCardParcel"; private static final String EXTRA_CSS_ADVERT = "org.societies.api.schema.css.directory.CssAdvertisementRecord"; private static final String LOG_TAG = AcceptFriendActivity.class.getName(); private static final String CLIENT_NAME = "org.societies.android.platform.events.notifications.FriendsActivity"; private IFriendsManager localFriendManager; private String targetCssID = ""; /** CSSManager service connection */ private ServiceConnection friendManagerConnection = new ServiceConnection() { public void onServiceDisconnected(ComponentName name) { Log.d(LOG_TAG, "Disconnecting from LocalCSSManager service"); } public void onServiceConnected(ComponentName name, IBinder service) { Log.d(LOG_TAG, "Connecting to LocalCSSManager service"); //get a local binder and service API LocalFriendsManagerBinder binder = (LocalFriendsManagerBinder) service; localFriendManager = (IFriendsManager) binder.getService(); localFriendManager.acceptFriendRequest(CLIENT_NAME, targetCssID); finish(); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.accept_friend_activity); //SET THE TEXT LABELS FOR THIS FRIEND REQUEST CssAdvertisementRecord advert = (CssAdvertisementRecord) getIntent().getParcelableExtra(EXTRA_CSS_ADVERT); targetCssID = advert.getId(); TextView lblName = (TextView) findViewById(R.id.txtName); TextView lblJid = (TextView) findViewById(R.id.txtJid); CharSequence charName = advert.getName(); CharSequence charJid = targetCssID; lblName.setText(charName); lblJid.setText(charJid); //ACCEPT BUTTON EVENT HANDLER Button btnAccept = (Button) findViewById(R.id.btnAccept); btnAccept.setOnClickListener(new OnClickListener() { public void onClick(View v) { acceptFriendRequest(targetCssID); } }); //LATER BUTTON EVENT HANDLER Button btnLater = (Button) findViewById(R.id.btnLater); btnLater.setOnClickListener(new OnClickListener() { public void onClick(View v) { finish(); //BASICALLY, IGNORE REQUEST } }); //ADD IMAGE - IF AVAILABLE VCardParcel vCard = (VCardParcel) getIntent().getParcelableExtra(EXTRA_CSS_VCARD);; byte[] avatarBytes = vCard.getAvatar(); if (avatarBytes != null) { Bitmap bMap = BitmapFactory.decodeByteArray(avatarBytes, 0, avatarBytes.length); ImageView image = (ImageView) findViewById(R.id.imgProfilePic); image.setImageBitmap(bMap); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.accept_friend_activity, menu); return true; } @Override public void onDestroy() { Log.d(LOG_TAG, "FriendsActivity service terminating"); try { if (localFriendManager !=null ) unbindService(friendManagerConnection); } catch (Exception ex) {} super.onDestroy(); } private void acceptFriendRequest(String requestId) { //BIND TO CSS MANAGER AND SEND ACCEPT Intent cssManagerintent = new Intent(getApplicationContext(), FriendsManagerLocal.class); this.getApplicationContext().bindService(cssManagerintent, friendManagerConnection, Context.BIND_AUTO_CREATE); } }